可以在应用程序模板中指定IAM策略,这样应用程序中的所有资源都将遵守该策略。如果想为应用程序中的单个服务指定不同的IAM策略,可以创建IAM角色,并在服务定义中使用该角色。
例如,在AWS Application Composer中使用AWS Lambda服务时,可以将以下IAM策略添加到应用程序模板中。此策略定义了允许Lambda函数读取S3存储桶中对象的权限:
{
"Resources": [
"arn:aws:s3:::my-bucket/*"
],
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Principal": {
"Service": "lambda.amazonaws.com"
}
}
如果想为Lambda函数指定另一个IAM策略,可以在服务定义中为函数指定一个新的角色。以下是一个使用自定义角色的示例Lambda函数定义:
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs12.x
Role: !GetAtt MyFunctionRole.Arn
MyFunctionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action:
- sts:AssumeRole
Path: "/"
Policies:
- PolicyName: MyCustomPolicy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- s3:GetObject
Resource: arn:aws:s3:::my-bucket/*