Lambda - 如何创建客户托管策略?
Lambda - How to create customer managed policy?
背景:
可以通过两种方式创建 IAM 策略:
托管策略(较新的方式)
- AWS 托管策略
- 客户管理的政策
内联策略(旧方法)
以下 SAM 模板正在创建内联策略:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello-world/
Handler: app.LambdaHandler
Runtime: nodejs8.10
Policies:
- Statement:
- Sid: AccessToS3Policy
Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::some-bucket/*'
在生成的角色中,如下图:
{
"roleName": "somestack-HelloWorldFunctionRole-AAAAAAAA",
"policies": [
{
"document": {
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:GetObjectACL"
],
"Resource": "arn:aws:s3:::some-bucket/*",
"Effect": "Allow",
"Sid": "AccessToS3Policy"
}
]
},
"name": "HelloWorldFunctionRolePolicy0",
"type": "inline"
},
.....
]
}
对于 Lambda 函数,
1) 如何创建客户托管策略?
2) 内联策略与客户管理的策略有何不同?
如果您在 SAM 模板中使用此语法
Policies:
- Statement:
- Sid: AccessToS3Policy
Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::some-bucket/*'
它将自动创建内联策略。如果您想创建客户管理的策略而不是内联策略,那么您需要在模板中将策略定义为单独的 Resource
并在 policies
中引用它。或者您可以在模板外部创建角色(例如通过 AWS 控制台)并引用该策略,就像您引用 AWS 托管策略一样。
内联策略与客户管理的策略有何不同?
我真的不会说内联策略是旧的做事方式。内联策略和客户托管策略之间的唯一区别是内联策略不能重复使用(您不能将内联策略分配给两个或多个实体)。但是,如果您需要一个您不打算在未来重复使用的特定策略,这通常会很方便。
背景:
可以通过两种方式创建 IAM 策略:
托管策略(较新的方式)
- AWS 托管策略
- 客户管理的政策
内联策略(旧方法)
以下 SAM 模板正在创建内联策略:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello-world/
Handler: app.LambdaHandler
Runtime: nodejs8.10
Policies:
- Statement:
- Sid: AccessToS3Policy
Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::some-bucket/*'
在生成的角色中,如下图:
{
"roleName": "somestack-HelloWorldFunctionRole-AAAAAAAA",
"policies": [
{
"document": {
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:GetObjectACL"
],
"Resource": "arn:aws:s3:::some-bucket/*",
"Effect": "Allow",
"Sid": "AccessToS3Policy"
}
]
},
"name": "HelloWorldFunctionRolePolicy0",
"type": "inline"
},
.....
]
}
对于 Lambda 函数,
1) 如何创建客户托管策略?
2) 内联策略与客户管理的策略有何不同?
如果您在 SAM 模板中使用此语法
Policies:
- Statement:
- Sid: AccessToS3Policy
Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::some-bucket/*'
它将自动创建内联策略。如果您想创建客户管理的策略而不是内联策略,那么您需要在模板中将策略定义为单独的 Resource
并在 policies
中引用它。或者您可以在模板外部创建角色(例如通过 AWS 控制台)并引用该策略,就像您引用 AWS 托管策略一样。
内联策略与客户管理的策略有何不同?
我真的不会说内联策略是旧的做事方式。内联策略和客户托管策略之间的唯一区别是内联策略不能重复使用(您不能将内联策略分配给两个或多个实体)。但是,如果您需要一个您不打算在未来重复使用的特定策略,这通常会很方便。