本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS SAM 策略模板
AWS SAM 允许您从策略模板列表中选择来将您的 Lambda 函数的权限范围限定为您的应用程序使用的资源。
AWS SAM 中的使用策略模板的 AWS Serverless Application Repository 应用程序无需任何特殊的客户确认即可从 AWS Serverless Application Repository 部署应用程序。
如果要请求添加新的策略模板,请执行以下操作:
-
针对
develop
AWS SAM 项目的 GitHub 分支中的 policy_templates.json 源文件提交拉取请求。您可以在 网站上的policy_templates.jsonGitHub 中找到源文件。 -
在 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: {}