AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何使用 AWS SAM 模板向 Lambda 函数授予 IAM 权限?
我想在我的 AWS Serverless Application Model(AWS SAM)应用程序中为 AWS Lambda 函数授予权限。如何在 AWS SAM 模板中定义具有范围权限的 Lambda 执行角色?
简短描述
要在 AWS SAM 模板中定义 Lambda 执行角色,可以使用以下 AWS::Serverless::Function 资源属性:
- Policies — 允许您使用预定义的策略创建新的执行角色,这些策略的作用范围可以限定到您的 Lambda 函数。
- Role — 允许您定义一个 AWS Identity and Access Management(IAM)角色来用作函数的执行角色。
- PermissionsBoundary — 允许您为创建的执行角色设置 IAM 权限边界。
**注意:**Policies 与 Roles 属性不能一起使用。当您的执行角色需要的权限过于具体而无法使用预定义策略时,使用 Role 属性会很有用。
解决方法
为新的 Lambda 执行角色指定策略
对于 Policies 属性,请输入以下任意组合:
- AWS 托管式策略的名称
- AWS SAM 策略模板的名称
- 内联策略文档
**注意:**AWS SAM 策略模板的范围仅限于特定 AWS 资源。有关策略模板及其向您的 Lambda 函数授予的权限的列表,请参阅 Policy template table。
以下是一些定义了 Policies 的 AWS SAM YAML 模板示例:
带已命名 AWS 托管式策略的 AWS SAM YAML 模板示例
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' b Resources: MyFunction: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://my-bucket/function.zip' Policies: # Give the Lambda service access to poll your DynamoDB Stream - AmazonDynamoDBFullAccess
定义了 [AWS SAM 策略模板(SQSPollerPolicy)的 AWS SAM YAML 模板](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html#policy-template-example-1)示例
MyFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: ${codeuri} Handler: hello.handler Runtime: python2.7 Policies: - SQSPollerPolicy: QueueName: !GetAtt MyQueue.QueueName
定义了内联策略文档的 AWS SAM YAML 模板示例
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: MyFunction: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://my-bucket/function.zip' Policies: - Statement: - Sid: SSMDescribeParametersPolicy Effect: Allow Action: - ssm:DescribeParameters Resource: '*' - Sid: SSMGetParameterPolicy Effect: Allow Action: - ssm:GetParameters - ssm:GetParameter Resource: '*'
(可选)指定 IAM 权限边界
要设置允许您的 Lambda 函数执行角色的最高权限,请使用 IAM 权限边界。
要设置 IAM 权限边界,请在您的 AWS SAM YAML 模板中执行以下操作:
指定权限边界的 Amazon 资源名称(ARN)
对于 PermissionsBoundary 属性,输入权限边界的 ARN。例如:
Properties: PermissionsBoundary: arn:aws:iam::123456789012:policy/LambdaBoundaries
注意:只有在使用 AWS SAM 模板创建新角色时,才能定义 PermissionsBoundary。无法为您指定的现有角色设置权限边界。
指定 Lambda 执行角色
对于 Role 属性,输入以下选项之一:
- 附加了 IAM 权限策略的 Lambda 执行角色的 ARN。
- 对您在同一 AWS SAM 模板中定义的 Role 资源的引用。
注意:如果未在 AWS SAM 模板中指定 Role,则在部署应用程序时会创建一个执行角色。此执行角色包括您定义的任何策略。
定义了 Role 属性的 AWS SAM YAML 模板示例
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: MyFunction: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: nodejs8.10 CodeUri: 's3://my-bucket/function.zip' Role: arn:aws:iam::111111111111:role/SAMPolicy
打包和部署应用程序
1. 在 AWS SAM 命令行界面(AWS SAM CLI)中,运行 sam build 命令来构建和打包您的应用程序。
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
2. 运行 sam deploy 命令来部署您的 AWS SAM 应用程序包。
有关更多信息,请参阅 Building applications 和 Deploying serverless applications。
相关信息
AWS Serverless Application Model(AWS SAM)(AWS SAM GitHub 存储库)
Policy templates(AWS SAM GitHub 存储库)
相关内容
AWS 官方已更新 1 年前
