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

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

Amazon SAM策略模板

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

Amazon SAM中的应用程序Amazon Serverless Application Repository使用策略模板不需要任何特殊的客户确认,即可从Amazon Serverless Application Repository.

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

  1. 针对 policy_templates.json 源文件提交拉取请求develop的分支Amazon SAM GitHub 项目。源文件在策略模板.json在 GitHub 网站。

  2. 在中提交问题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:策略模板不具有占位符值

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

注意

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

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

策略模板表

下表列出了可用的策略模板。

策略模板 描述
AcmGetCertificatePolicy 授予从中读取证书的权限Amazon Certificate Manager.
AMIDescribePolicy 授予描述Amazon 系统映像 (AMI) 的权限。
AthenaQuery策略 授予执行 Athena 查询的权限。
AWSSecretsManagerGetSecretValuePolicy 授予获取指定的 secret 值的权限Amazon Secrets Manager密钥。
AWSSecretsManagerRotationPolicy 授予在中轮换密钥的权限Amazon Secrets Manager.
CloudFormationDescribeStacks策略 授予描述权限Amazon CloudFormation堆栈。
CloudWatchDashboardPolicy 授予对指标进行操作的权限 CloudWatch控制面板。
CloudWatchDescribeAlarmHistoryPolicy 授予描述权限 CloudWatch 告警历史记录。
CloudWatchPutMetric策略 授予权限以将指标发送到 CloudWatch.
CodeCommitCrudPolicy 授予创建/读取/更新/删除特定对象的权限 CodeCommit 存储库。
CodeCommitReadPolicy 授予读取特定对象的权限 CodeCommit存储库。
CodePipelineLambdaExecution策略 授予由调用的 Lambda 函数的权限 CodePipeline 以报告任务的状态。
CodePipelineReadOnly策略 授予对获取有关详细信息的读取权限 CodePipeline 管道。
ComprehendBasicAccessPolicy 授予检测实体、关键短语、语言和情绪的权限。
CostExplorerReadOnly策略 为账单历史记录的只读Cost Explorer API 授予只读权限。
DynamoDBBackupFullAccessPolicy 授予对表进行 DynamoDB 按需备份的读写权限。
DynamoDBCrudPolicy 授予对 Amazon DynamoDB 表的创建、读取、更新和删除权限。
DynamoDBReadPolicy 授予对 DynamoDB 表的只读权限。
DynamoDBReconfigurePolicy 授予重新配置 DynamoDB 表的权限。
DynamoDBRestoreFromBackupPolicy 授予从备份还原 DynamoDB 表的权限。
DynamoDBStreamRead策略 授予描述和读取 DynamoDB 流和记录的权限。
DynamoDBWritePolicy 授予对 DynamoDB 表的只写权限。
EC2CopyImage策略 授予复制 Amazon EC2 映像的权限。
EC2DescribePolicy 授予描述Amazon EElastic Compute Cloud (Amazon EC2)
EcsRunTaskPolicy 授予权限以启动任务定义的新任务。
EFSWriteAccess策略 授予挂载具有写入权限的 Amazon EFS 文件系统的权限。
EKSDescribePolicy 授予描述或列出 Amazon EKS 集群的权限。
ElasticMapReduceAddJobFlowStepsPolicy 授予权限以将新步骤添加到运行的集群中。
ElasticMapReduceCancelStepsPolicy 授予权限以取消运行的集群中的一个或多个待处理步骤。
ElasticMapReduceModifyInstanceFleet策略 授予列出集群中实例队列详细信息和修改容量的权限。
ElasticMapReduceModifyInstanceGroups策略 授予列出集群中实例组的详细信息和修改设置的权限。
ElasticMapReduceSetTerminationProtectionPolicy 授予权限以设置集群的终止保护。
ElasticMapReduceTerminateJobFlows策略 授予以下权限以关闭集群的权限。
ElasticsearchHttpPostPolicy 向亚马逊授予 POST 权限 OpenSearch 服务 。
EventBridgePutEvents策略 授予将事件发送到的权限 EventBridge.
FilterLogEventsPolicy 授予筛选权限 CloudWatch 记录指定日志组的事件。
FirehoseCrud策略 授予创建、写入、更新和删除 Kinesis Data Firehose 传输流的权限。
FirehoseWrite策略 授予写入到 Kinesis Data Firehose 传输流的权限。
KinesisCrud策略 授予创建、发布和删除 Amazon Kinesis 直播的权限。
KinesisStreamReadPolicy 授予列出并阅读 Amazon Kinesis 流的权限。
自杀DecryptPolicy 授予使用解密的权限Amazon Key Management Service(Amazon KMS) 键。
自杀EncryptPolicy 授予使用加密的权限Amazon Key Management Service(Amazon KMS) 键。
LambdaInvoke策略 授予调用Amazon Lambda函数、别名或版本。
MobileAnalyticsWriteOnlyAccessPolicy 授予对所有应用程序资源放置事件数据的只写权限。
OrganizationsListAccountsPolicy 授予列出子账户名称和 ID 的只读权限。
PinpointEndpointAccessPolicy 授予为 Amazon Pinpoint 应用程序获取并更新终端节点的权限。
PollyFullAccessPolicy 授予对 Amazon Polly 词典资源的完全访问权限。
RekognitionDetectOnlyPolicy 授予检测面部、标签和文本的权限。
RekognitionFacesManagementPolicy 授予在Amazon Rekognition 系列中添加、删除和搜索人脸的权限。
RekognitionFaces策略 授予比较并检测面部和标签的权限。
RekognitionLabels策略 授予检测对象和审核标签的权限。
RekognitionNoDataAccess策略 授予比较并检测面部和标签的权限。
RekognitionRead策略 授予列出和搜索人脸的权限。
RekognitionWriteOnlyAccess策略 授予创建集合和索引人脸的权限。
Route53ChangeResourceRecordSets策略 授予更改 Route 53 中的资源记录集的权限。
S3CrudPolicy 授予创建、读取、更新和删除权限,以便对 Amazon S3 存储桶中的数据元执行操作。
S3FullAccess策略 授予对 Amazon S3 存储桶中的对象执行操作的完全访问权限。
S3ReadPolicy 授予对 Amazon Simple Storage Service (Amazon S3) 存储桶中的只读权限。
S3WritePolicy 授予写入到 Amazon S3 存储桶的写权限。
SageMakerCreateEndpointConfigPolicy 授予权限以在 SageMaker.
SageMakerCreateEndpoint策略 授予权限以在 SageMaker.
ServerlessRepoReadWriteAccessPolicy 授予在Amazon Serverless Application Repository服务。
SESBulkTemplatedCrudPolicy 授予发送电子邮件、模板化电子邮件、模板化批量电子邮件和验证身份的权限。
SESCrudPolicy 授予发送电子邮件和验证身份的权限。
SESEmailTemplateCrudPolicy 授予创建、获取、列出、更新和删除 Amazon SES 电子邮件模板的权限。
SESSendBounce策略 给 SendBounce 授予对Amazon SSimple Email Service (Amazon SES)
SNSCrudPolicy 授予创建、发布和订阅 Amazon SNS 主题的权限。
SNSPublishMessage策略 授予权限以发布消息到 Amazon Simple Notification Service (Amazon SNS) 主题。
SQSPollerPolicy 授予轮询Amazon Simple Queueue Service (Amazon SQS
SQSSendMessage策略 授予将消息发送到 Amazon SQS 队列的权限。
SSMParameterRead策略 授予访问来自 Amazon EC2 Systems Manager (SSM) 参数存储的参数的权限,以便在此账户中加载密钥。
StepFunctionsExecutionPolicy 授予开始执行 Step Functions 状态机的权限。
TextractDetectAnalyzePolicy 允许使用 Amazon Textract 检测和分析文档。
TextractGetResultPolicy 允许从 Amazon Textract 获取检测到和分析的文档。
TextractPolicy 授予对Amazon Textract ect 的完全访问权限
VPCAccessPolicy 授予创建、删除、描述和分离弹性网络接口的权限。

问题排查

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

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

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

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

要解决此问题,请声明该策略,如以下示例所示CloudWatchPutMetric策略.

MyFunction: Policies: - CloudWatchPutMetricPolicy: {}