要使用Lambda访问S3和调用Rekognition,需要在Lambda函数执行角色中添加相应的权限。以下是配置AWS SAM中Lambda函数执行角色权限的示例代码:
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: lambda_function.lambda_handler
Runtime: python3.8
Role: MyRole
Policies:
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:*
Resource: "*"
- Effect: Allow
Action:
- rekognition:*
Resource: "*"
Environment:
Variables:
BUCKET_NAME: my-bucket
在此示例中,我们将访问S3和调用Rekognition的权限添加到Lambda执行角色中的'Policies”节中,并为环境变量设置了一个名为'BUCKET_NAME”的值。
此外,您还可以使用AWS SAM CLI创建一个IAM角色,并将该角色与Lambda函数关联。例如,以下是使用AWS SAM CLI为Lambda函数创建IAM角色的示例代码:
Resources:
MyRole:
Type: AWS::IAM::Role
Properties:
Path: /
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: MyPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:*
Resource: "*"
- Effect: Allow
Action:
- rekognition:*
Resource: "*"
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: lambda_function.lambda_handler
Runtime: python3.8
Role: !GetAtt MyRole.Arn
在此示例中,我们使用AWS SAM CLI创建了一个名为'MyRole”的IAM角色,并在Lambda函数的'Role”属性中引用该角色。我们还将访问S3和调用Rekognition的权限添加到IAM角色的'Policies”部分中。
请注意,代码中的'*”通配符将为Lambda函数执行角色提供所有资源的权限。根据您的特定需求,您可以更改资源字符串,