本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SAM策略模板
Amazon Serverless Application Model (Amazon SAM) 允许您从策略模板列表中进行选择,将 Lambda 函数和 Amazon Step Functions 状态机的权限范围限定为应用程序使用的资源。
Amazon SAM 中使用策略模板 Amazon Serverless Application Repository 的应用程序不需要任何特殊的客户确认即可从中部署应用程序。 Amazon Serverless Application Repository
如果要请求添加新的策略模板,请执行以下操作:
-
针对项目分支中的 policy_templates.json 源文件提交拉取请求。
develop
Amazon SAM GitHub 你可以在网站上的 p olicy_templates.json 中找到源文件。 GitHub -
在 Amazon SAM GitHub 项目中提交一个问题,其中包含您的拉取请求的原因和请求链接。使用此链接提交新问题:Amazon Serverless Application Model:问题
。
语法
对于您在模板文件中指定的每个策略 Amazon SAM 模板,必须始终指定一个包含策略模板占位符值的对象。如果策略模板不需要任何占位符值,则必须指定一个空对象。
YAML
MyFunction: Type: AWS::Serverless::Function Properties: Policies: - PolicyTemplateName1: # Policy template with placeholder value Key1: Value1 - PolicyTemplateName2: {} # Policy template with no placeholder value
示例
示例 1:具有占位符值的策略模板
以下示例显示 SQSPollerPolicy 策略模板期待 QueueName
作为资源。 Amazon 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: {}
策略模板表
下表列出了可用的策略模板。
策略模板 | 描述 |
---|---|
AcmGetCertificatePolicy | 授予读取证书的权限 Amazon Certificate Manager。 |
AMIDescribePolicy | 授予描述 Amazon 机器映像的权限 (AMIs)。 |
AthenaQueryPolicy | 授予执行 Athena 查询的权限。 |
AWSSecretsManagerGetSecretValuePolicy | 授予获取指定 Amazon Secrets Manager 密钥的密钥值的权限。 |
AWSSecretsManagerRotationPolicy | 授予在 Amazon Secrets Manager中轮换密钥的权限。 |
CloudFormationDescribeStacksPolicy | 授予描述 Amazon CloudFormation 堆栈的权限。 |
CloudWatchDashboardPolicy | 授予在 CloudWatch 仪表板上放置要操作的指标的权限。 |
CloudWatchDescribeAlarmHistoryPolicy | 授予描述 CloudWatch 警报历史记录的权限。 |
CloudWatchPutMetricPolicy | 授予向发送指标的权限 CloudWatch。 |
CodeCommitCrudPolicy | 为特定 CodeCommit存储库中的create/read/update/delete对象授予权限。 |
CodeCommitReadPolicy | 授予读取特定 CodeCommit 存储库中对象的权限。 |
CodePipelineLambdaExecutionPolicy | 允许调用的 Lambda 函数报告任务状态。 CodePipeline |
CodePipelineReadOnlyPolicy | 授予读取权限以获取有关 CodePipeline 管道的详细信息。 |
ComprehendBasicAccessPolicy | 授予检测实体、关键短语、语言和情绪的权限。 |
CostExplorerReadOnlyPolicy | 向只读的 Cost Explorer 授予账单历史记录APIs的只读权限。 |
DynamoDBBackupFullAccessPolicy | 授予对表进行 DynamoDB 按需备份的读和写权限。 |
DynamoDBCrudPolicy | 授予对 Amazon DynamoDB 表的创建、读取、更新和删除权限。 |
DynamoDBReadPolicy | 授予对 DynamoDB 表的只读权限。 |
DynamoDBReconfigurePolicy | 授予重新配置 DynamoDB 表的权限。 |
DynamoDBRestoreFromBackupPolicy | 授予从备份还原 DynamoDB 表的权限。 |
DynamoDBStreamReadPolicy | 授予描述和读取 DynamoDB 流和记录的权限。 |
DynamoDBWritePolicy | 授予对 DynamoDB 表的只写权限。 |
EC2CopyImagePolicy | 允许复制 Amazon EC2 图片。 |
EC2DescribePolicy | 允许描述亚马逊弹性计算云 (AmazonEC2) 实例。 |
EcsRunTaskPolicy | 授予根据任务定义启动新任务的权限。 |
EFSWriteAccessPolicy | 授予以写入权限挂载 Amazon EFS 文件系统的权限。 |
EKSDescribePolicy | 授予描述或列出 Amazon EKS 集群的权限。 |
ElasticMapReduceAddJobFlowStepsPolicy | 授予将新步骤添加到运行的集群中的权限。 |
ElasticMapReduceCancelStepsPolicy | 授予取消正在运行中的集群中的一个或多个待处理步骤的权限。 |
ElasticMapReduceModifyInstanceFleetPolicy | 授予列出集群内实例集的详细信息和修改这些实例集的容量的权限。 |
ElasticMapReduceModifyInstanceGroupsPolicy | 授予列出集群内实例组的详细信息和修改这些实例组的设置的权限。 |
ElasticMapReduceSetTerminationProtectionPolicy | 授予为集群设置终止保护的权限。 |
ElasticMapReduceTerminateJobFlowsPolicy | 授予关闭集群的权限。 |
ElasticsearchHttpPostPolicy | 向 Amazon OpenSearch 服务授POST予权限。 |
EventBridgePutEventsPolicy | 授予向发送事件的权限 EventBridge。 |
FilterLogEventsPolicy | 授予筛选指定 CloudWatch 日志组中的日志事件的权限。 |
FirehoseCrudPolicy | 授予创建、写入、更新和删除 Firehose 传输流的权限。 |
FirehoseWritePolicy | 授予写入 Firehose 传输流的权限。 |
KinesisCrudPolicy | 授予创建、发布和删除 Amazon Kinesis 流的权限。 |
KinesisStreamReadPolicy | 授予列出和读取 Amazon Kinesis 流的权限。 |
KMSDecryptPolicy | 授予使用 Amazon Key Management Service (Amazon KMS) 密钥解密的权限。 |
KMSEncryptPolicy | 允许使用 Amazon Key Management Service (Amazon KMS) 密钥进行加密。 |
LambdaInvokePolicy | 授予调用 Amazon Lambda 函数、别名或版本的权限。 |
MobileAnalyticsWriteOnlyAccessPolicy | 授予对所有应用程序资源放置事件数据的只写权限。 |
OrganizationsListAccountsPolicy | 授予列出子女账户名称的只读权限,以及IDs. |
PinpointEndpointAccessPolicy | 授予为 Amazon Pinpoint 应用程序获取并更新端点的权限。 |
PollyFullAccessPolicy | 授予对 Amazon Polly 词典资源的完全访问权限。 |
RekognitionDetectOnlyPolicy | 授予检测人脸、标签和文本的权限。 |
RekognitionFacesManagementPolicy | 授予在 Amazon Rekognition 集合中添加、删除和搜索人脸的权限。 |
RekognitionFacesPolicy | 授予比较并检测面部和标签的权限。 |
RekognitionLabelsPolicy | 授予检测对象和审核标签的权限。 |
RekognitionNoDataAccessPolicy | 授予比较并检测面部和标签的权限。 |
RekognitionReadPolicy | 授予列出和搜索人脸的权限。 |
RekognitionWriteOnlyAccessPolicy | 授予创建集合和为人脸编制索引的权限。 |
Route53ChangeResourceRecordSetsPolicy | 授予更改 Route 53 中的资源记录集的权限。 |
S3CrudPolicy | 授予创建、读取、更新和删除权限,以便对 Amazon S3 存储桶中的对象执行操作。 |
S3FullAccessPolicy | 授予完全访问权限,以便对 Amazon S3 存储桶中的对象执行操作。 |
S3ReadPolicy | 授予读取 Amazon Simple Storage Service (Amazon S3) 存储桶中的对象的只读权限。 |
S3WritePolicy | 授予将对象写入到 Amazon S3 存储桶的写入权限。 |
SageMakerCreateEndpointConfigPolicy | 授予在 SageMaker AI 中创建终端节点配置的权限。 |
SageMakerCreateEndpointPolicy | 授予在 SageMaker AI 中创建终端节点的权限。 |
ServerlessRepoReadWriteAccessPolicy | 授予在 Amazon Serverless Application Repository 服务中创建和列出应用程序的权限。 |
SESBulkTemplatedCrudPolicy | 授予发送电子邮件、模板化电子邮件和模板化批量电子邮件以及验证身份的权限。 |
SESBulkTemplatedCrudPolicy_v2 | 允许发送 Amazon SES 电子邮件、模板化电子邮件和模板化批量电子邮件以及验证身份。 |
SESCrudPolicy | 授予发送电子邮件和验证身份的权限。 |
SESEmailTemplateCrudPolicy | 授予创建、获取、列出、更新和删除 Amazon SES 电子邮件模板的权限。 |
SESSendBouncePolicy | 向亚马逊简单电子邮件服务 (AmazonSES) 身份 SendBounce 授予权限。 |
SNSCrudPolicy | 授予创建、发布和订阅 Amazon SNS 主题的权限。 |
SNSPublishMessagePolicy | 允许向亚马逊简单通知服务 (AmazonSNS) 主题发布消息。 |
SQSPollerPolicy | 允许轮询亚马逊简单队列服务 (AmazonSQS) 队列。 |
SQSSendMessagePolicy | 授予向 Amazon SQS 队列发送消息的权限。 |
SSMParameterReadPolicy | 授予访问来自 Amazon S EC2 ystems Manager (SSM) 参数存储的参数的权限,以便在此账户中加载密钥。在参数名称不包含斜杠前缀时使用。 |
SSMParameterWithSlashPrefixReadPolicy | 授予访问来自 Amazon S EC2 ystems Manager (SSM) 参数存储的参数的权限,以便在此账户中加载密钥。在参数名称包含斜杠前缀时使用。 |
StepFunctionsExecutionPolicy | 授予开始执行 Step Functions 状态机的权限。 |
TextractDetectAnalyzePolicy | 授予使用 Amazon Textract 检测和分析文档的权限。 |
TextractGetResultPolicy | 授予从 Amazon Textract 中获取检测到和分析过的文档的权限。 |
TextractPolicy | 授予对 Amazon Textract 的完全访问权限。 |
VPCAccessPolicy | 授予访问权限以创建、删除、描述和分离弹性网络接口。 |
问题排查
SAMCLI错误:“必须为策略模板'< policy-template-name >'指定有效的参数值”
执行 sam build
时,您会看到以下错误:
"Must specify valid parameter values for policy template '<policy-template-name>'"
这意味着您在声明没有任何占位符值的策略模板时没有传递空对象。
要解决此问题,请如以下示例所示声明策略:CloudWatchPutMetricPolicy。
MyFunction: Policies: - CloudWatchPutMetricPolicy: {}