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. 根据中的policy_templates.json源文件提交pull请求 develop 的分支 AWS SAM GitHub 项目。您可以在以下位置找到源文件 策略_模板.json 在 GitHub 网站。

  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: {}

策略模板表

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

策略模板 Description
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 授予POST权限 Amazon Elasticsearch Service.
S3ReadPolicy 为中的对象提供只读权限 Amazon Simple Storage Service (人Amazon S3)桶。
S3WritePolicy 为中的对象提供写入权限 Amazon S3 桶。
S3CrudPolicy 授予对象创建、读取、更新和删除权限 Amazon S3 桶。
AMIDescribePolicy 授予描述AmazonMachineImages(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 lexicon资源。
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 为只读CostExplorer提供只读权限 APIs 账单历史记录。
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

SAMCLI错误: "必须指定策略模板'<policy-template-name>'的有效参数值"

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

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

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

要修复此问题,请声明如下示例的策略 CloudWatchPutMetricPolicy.

MyFunction: Policies: - CloudWatchPutMetricPolicy: {}