AWS SAM 策略模板 - AWS Serverless Application Model
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS SAM 策略模板

AWS SAM 允许您从策略模板列表中选择来将您的 Lambda 函数的权限范围限定为您的应用程序使用的资源。

AWS SAM 中的使用策略模板的 AWS Serverless Application Repository 应用程序无需任何特殊的客户确认即可从 AWS Serverless Application Repository 部署应用程序。

如果要请求添加新的策略模板,请执行以下操作:

  1. 针对 develop AWS SAM 项目的 GitHub 分支中的 policy_templates.json 源文件提交拉取请求。您可以在 网站上的 policy_templates.jsonGitHub 中找到源文件。

  2. 在 AWS SAM GitHub 项目中提交问题,包括拉取请求的原因和请求的链接。使用此链接提交新问题:AWS 无服务器应用程序模型: 问题

Syntax

对于您在 AWS SAM 模板文件中指定的每个策略模板,您必须始终指定一个包含策略模板占位符值的对象。如果策略模板不需要任何占位符值,则必须指定一个空对象。

YAML

MyFunction: Type: AWS::Serverless::Function Properties: Policies: - PolicyTemplateName1: # Policy template with placeholder value Key1: Value1 - PolicyTemplateName2: {} # Policy template with no placeholder value

Examples

示例 1:具有占位符值的策略模板

以下示例显示 SQSPollerPolicy 策略模板期待 QueueName 作为资源。模板检索“AWS SAM”MyQueue 队列的名称,您可以在同一应用程序中创建该队列或将其作为应用程序的参数请求。Amazon SQS

MyFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: ${codeuri} Handler: hello.handler Runtime: python2.7 Policies: - SQSPollerPolicy: QueueName: !GetAtt MyQueue.QueueName

示例 2:不带占位符值的策略模板

以下示例包含 CloudWatchPutMetricPolicy 策略模板,该模板没有占位符值。

注意

即使没有占位符值,您也必须指定空对象,否则会导致错误。

MyFunction: Type: 'AWS::Serverless::Function' Properties: CodeUri: ${codeuri} Handler: hello.handler Runtime: python2.7 Policies: - CloudWatchPutMetricPolicy: {}

策略模板表

以下是可用的策略模板表。

策略模板 描述
SQSPollerPolicy 授予权限以轮询 Amazon Simple Queue Service (Amazon SQS) 队列。
LambdaInvokePolicy 授予权限以调用 AWS Lambda 函数、别名或版本。
CloudWatchDescribeAlarmHistoryPolicy 授予权限以描述 CloudWatch 警报历史记录。
CloudWatchPutMetricPolicy 授予权限以将指标发送到 CloudWatch。
EC2DescribePolicy 授予权限以描述 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
DynamoDBCrudPolicy 授予对 Amazon DynamoDB 表的创建、读取、更新和删除权限。
DynamoDBReadPolicy 提供对 DynamoDB 表的只读权限。
DynamoDBWritePolicy 授予对 DynamoDB 表的只写权限。
DynamoDBReconfigurePolicy 授予权限以重新配置 DynamoDB 表。
SESSendBouncePolicy 向 SendBounce (Amazon Simple Email Service) 身份授予 Amazon SES 权限。
ElasticsearchHttpPostPolicy 向 Amazon Elasticsearch Service 授予 POST 权限。
S3ReadPolicy 授予只读权限以读取 Amazon Simple Storage Service (Amazon S3) 存储桶中的对象。
S3WritePolicy 授予写入权限以将对象写入 Amazon S3 存储桶。
S3CrudPolicy 授予创建、读取、更新和删除权限以对 Amazon S3 存储桶中的对象执行操作。
AMIDescribePolicy 授予权限以描述 Amazon 系统映像 (AMI)。
CloudFormationDescribeStacksPolicy 授予权限以描述 AWS CloudFormation 堆栈。
RekognitionDetectOnlyPolicy 授予权限以检测人脸、标签和文本。
RekognitionNoDataAccessPolicy 授予权限以比较并检测人脸和标签。
RekognitionReadPolicy 授予权限以列出和搜索人脸。
RekognitionWriteOnlyAccessPolicy 授予权限以创建集合和索引人脸。
SQSSendMessagePolicy 授予权限以将消息发送到 Amazon SQS 队列。
SNSPublishMessagePolicy 授予权限以将消息发布到 Amazon Simple Notification Service (Amazon SNS) 主题。
VPCAccessPolicy 授予访问权限以创建、删除、描述和分离弹性网络接口。
DynamoDBStreamReadPolicy 授予权限以描述和读取 DynamoDB 流和记录。
KinesisStreamReadPolicy 授予权限以列出和读取 Amazon Kinesis 流。
SESCrudPolicy 授予权限以发送电子邮件和验证身份。
SNSCrudPolicy 授予权限以创建、发布和订阅 Amazon SNS 主题。
KinesisCrudPolicy 授予权限以创建、发布和删除 Amazon Kinesis 流。
KMSDecryptPolicy 授予权限以使用 AWS Key Management Service (AWS KMS) 密钥进行解密。
KMSEncryptPolicy 授予权限以使用 AWS Key Management Service (AWS KMS) 密钥加密。
PollyFullAccessPolicy 提供对 Amazon Polly 词典资源的完全访问权限。
S3FullAccessPolicy 授予完全访问权限以对 Amazon S3 存储桶中的对象执行操作。
CodePipelineLambdaExecutionPolicy 为 Lambda 调用的 CodePipeline 函数授予权限以报告作业的状态。
ServerlessRepoReadWriteAccessPolicy 授予权限以在 AWS Serverless Application Repository 服务中创建和列出应用程序。
EC2CopyImagePolicy 授予权限以复制 Amazon EC2 映像。
AWSSecretsManagerRotationPolicy 授予权限以在 AWS Secrets Manager 中轮换密钥。
AWSSecretsManagerGetSecretValuePolicy 授予权限以获取指定的 AWS Secrets Manager 密钥的密钥值。
CodePipelineReadOnlyPolicy 授予读取权限以获取有关 CodePipeline 管道的详细信息。
CloudWatchDashboardPolicy 授予权限以放置要在 CloudWatch 控制面板上运行的指标。
RekognitionFacesManagementPolicy 授予权限以在 Amazon Rekognition 集合中添加、删除和搜索人脸。
RekognitionFacesPolicy 授予权限以比较并检测人脸和标签。
RekognitionLabelsPolicy 授予权限以检测对象和审核标签。
DynamoDBBackupFullAccessPolicy 授予对表的 DynamoDB 按需备份的读写权限。
DynamoDBRestoreFromBackupPolicy 授予权限以从备份还原 DynamoDB 表。
ComprehendBasicAccessPolicy 提供检测实体、关键短语、语言和情绪的权限。
MobileAnalyticsWriteOnlyAccessPolicy 授予只写权限,为所有应用程序资源放置事件数据。
PinpointEndpointAccessPolicy 授予权限以获取和更新 Amazon Pinpoint 应用程序的终端节点。
FirehoseWritePolicy 授予权限以写入 Kinesis Data Firehose 传输流。
FirehoseCrudPolicy 授予权限以创建、写入、更新和删除 Kinesis Data Firehose 传输流。
EKSDescribePolicy 授予权限以描述或列出 Amazon EKS 集群。
CostExplorerReadOnlyPolicy 向 APIs 只读 Cost Explorer 提供账单历史记录的只读权限。
OrganizationsListAccountsPolicy 授予只读权限以列出子账户名称和 IDs。
SESBulkTemplatedCrudPolicy 授予权限以发送电子邮件、模板化电子邮件、模板化批量电子邮件和验证身份。
SESEmailTemplateCrudPolicy 授予权限以创建、获取、列出、更新和删除 Amazon SES 电子邮件模板。
FilterLogEventsPolicy 授予权限以筛选指定日志组中的 CloudWatch Logs 事件。
SSMParameterReadPolicy 授予权限以从 Amazon EC2 Systems Manager (SSM) 参数存储访问参数,以便加载此账户中的密钥。
StepFunctionsExecutionPolicy 授予权限以启动 Step Functions 状态机执行。
CodeCommitCrudPolicy 授予在特定 CodeCommit 存储库中创建/读取/更新/删除对象的权限。
CodeCommitReadPolicy 授予权限以读取特定 CodeCommit 存储库中的对象。
AthenaQueryPolicy 授予权限以执行 Athena 查询。
TextractPolicy 提供对 Amazon Textract 的完全访问权限。
TextractDetectAnalyzePolicy 提供使用 Amazon Textract 检测和分析文档的权限。
TextractGetResultPolicy 提供从 Amazon Textract 获取检测和分析文档的访问权限。
EventBridgePutEventsPolicy 授予权限以将事件发送到 EventBridge。
ElasticMapReduceModifyInstanceFleetPolicy 授予权限以列出详细信息并修改集群中实例队列的容量。
ElasticMapReduceSetTerminationProtectionPolicy 授予权限以设置集群的终止保护。
ElasticMapReduceModifyInstanceGroupsPolicy 授予权限以列出集群中实例组的详细信息和修改设置。
ElasticMapReduceCancelStepsPolicy 授予权限以取消正在运行的集群中的一个或多个待处理步骤。
ElasticMapReduceTerminateJobFlowsPolicy 授予权限以关闭集群。
ElasticMapReduceAddJobFlowStepsPolicy 授予权限以将新步骤添加到正在运行的集群中。
SageMakerCreateEndpointPolicy 授予权限以在 SageMaker 中创建终端节点。
SageMakerCreateEndpointConfigPolicy 授予权限以在 SageMaker 中创建终端节点配置。
EcsRunTaskPolicy 授予权限以便为任务定义启动新任务。
EFSWriteAccessPolicy 授予权限以使用写入访问权限挂载 Amazon EFS 文件系统。

Troubleshooting

SAM CLI 错误:“必须指定策略模板“<policy-template-name>”的有效参数值

执行 sam build 时,您会看到以下错误:

"Must specify valid parameter values for policy template '<policy-template-name>'"
            

这意味着,在声明没有任何占位符值的策略模板时,您不会传递空对象。

要修复此问题,请声明与以下示例类似的 CloudWatchPutMetricPolicy 策略。

MyFunction: Policies: - CloudWatchPutMetricPolicy: {}