기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SAM 정책 템플릿
AWS Serverless Application Model(AWS SAM)를 사용하면 정책 템플릿 목록에서 선택하여 Lambda 함수 및 AWS Step Functions 상태 시스템의 권한 범위를 애플리케이션에서 사용하는 리소스로 지정할 수 있습니다.
정책 템플릿을 사용하는 AWS Serverless Application Repository의 AWS SAM 애플리케이션의 경우 AWS Serverless Application Repository에서 애플리케이션을 배포할 때 특별한 고객 승인이 필요하지 않습니다.
새 정책 템플릿 추가를 요청하려면 다음을 수행합니다.
-
AWS SAM GitHub 프로젝트의
develop
브랜치에 있는 policy_templates.json 소스 파일에 대해 풀 요청을 제출합니다. 소스 파일은 GitHub 웹사이트의 policy_templates.json에서 찾을 수 있습니다. -
AWS SAM GitHub 프로젝트에 풀 요청의 이유와 요청 링크가 포함된 문제를 제출합니다. 이 링크를 사용하여 새 문제를 제출합니다. AWS Serverless Application Model: 문제
.
구문
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
예시
예 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: {}
정책 템플릿 테이블
다음은 사용 가능한 정책 템플릿의 테이블입니다.
정책 템플릿 | 설명 |
---|---|
AcmGetCertificatePolicy | AWS Certificate Manager에서 인증서를 읽을 수 있는 권한을 부여합니다. |
AMIDescribePolicy | Amazon Machine Image(AMI)를 설명할 수 있는 권한을 부여합니다. |
AthenaQueryPolicy | Athena 쿼리를 실행할 권한을 부여합니다. |
AWSSecretsManagerGetSecretValuePolicy | 지정된 AWS Secrets Manager 보안 암호의 보안 암호 값을 가져올 수 있는 권한을 부여합니다. |
AWSSecretsManagerRotationPolicy | AWS Secrets Manager에서 보안 암호를 교체할 수 있는 권한을 부여합니다. |
CloudFormationDescribeStacksPolicy | AWS CloudFormation 스택을 설명할 수 있는 권한을 부여합니다. |
CloudWatchDashboardPolicy | CloudWatch 대시보드에서 작동할 지표를 배치할 권한을 부여합니다. |
CloudWatchDescribeAlarmHistoryPolicy | CloudWatch 경보 기록을 설명할 수 있는 권한을 부여합니다. |
CloudWatchPutMetricPolicy | CloudWatch에 지표를 전송할 수 있는 권한을 부여합니다. |
CodeCommitCrudPolicy | 특정 CodeCommit 리포지토리 내에서 객체를 생성/읽기/업데이트/삭제할 수 있는 권한을 부여합니다. |
CodeCommitReadPolicy | 특정 CodeCommit 리포지토리 내에서 객체를 읽을 수 있는 권한을 부여합니다. |
CodePipelineLambdaExecutionPolicy | CodePipeline에서 호출한 Lambda 함수가 작업 상태를 보고하도록 권한을 부여합니다. |
CodePipelineReadOnlyPolicy | CodePipeline 파이프라인의 세부 정보를 가져올 수 있는 읽기 권한을 부여합니다. |
ComprehendBasicAccessPolicy | 엔터티, 핵심 문구, 언어 및 감정을 탐지할 수 있는 권한을 부여합니다. |
CostExplorerReadOnlyPolicy | 청구 내역에 대한 읽기 전용 Cost Explorer API에 읽기 전용 권한을 부여합니다. |
DynamoDBBackupFullAccessPolicy | 테이블에 대한 DynamoDB 온디맨드 백업에 읽기 및 쓰기 권한을 부여합니다. |
DynamoDBCrudPolicy | Amazon DynamoDB 테이블에 생성, 읽기, 업데이트 및 삭제 권한을 부여합니다. |
DynamoDBReadPolicy | DynamoDB 테이블에 읽기 전용 권한 부여 |
DynamoDBReconfigurePolicy | DynamoDB 테이블을 재구성할 수 있는 권한을 부여합니다. |
DynamoDBRestoreFromBackupPolicy | 백업에서 테이블을 복원할 수 있는 권한을 부여합니다. |
DynamoDBStreamReadPolicy | DynamoDB 스트림과 레코드를 설명하고 읽을 수 있는 권한을 부여합니다. |
DynamoDBWritePolicy | DynamoDB 테이블에 쓰기 전용 권한 부여 |
EC2CopyImagePolicy | Amazon EC2 이미지를 복사할 수 있는 권한을 부여합니다. |
EC2DescribePolicy | Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 설명할 수 있는 권한을 부여합니다. |
EcsRunTaskPolicy | 태스크 정의에 대해 새 태스크를 시작할 수 있는 권한을 부여합니다. |
EFSWriteAccessPolicy | 쓰기 액세스 권한이 있는 Amazon EFS 파일 시스템을 마운트할 수 있는 권한을 부여합니다. |
EKSDescribePolicy | Amazon EKS 클러스터를 설명하거나 나열할 수 있는 권한을 부여합니다. |
ElasticMapReduceAddJobFlowStepsPolicy | 실행 중인 클러스터에 새 단계를 추가할 수 있는 권한을 부여합니다. |
ElasticMapReduceCancelStepsPolicy | 실행 중인 클러스터에서 대기 중 단계를 취소할 수 있는 권한을 부여합니다. |
ElasticMapReduceModifyInstanceFleetPolicy | 클러스터 내 인스턴스 플릿의 세부 정보를 나열하고 용량을 수정할 수 있는 권한을 부여합니다. |
ElasticMapReduceModifyInstanceGroupsPolicy | 클러스터 내 인스턴스 그룹의 세부 정보를 나열하고 설정을 수정할 수 있는 권한을 부여합니다. |
ElasticMapReduceSetTerminationProtectionPolicy | 클러스터에 대한 종료 보호를 설정할 수 있는 권한을 부여합니다. |
ElasticMapReduceTerminateJobFlowsPolicy | 클러스터를 종료할 수 있는 권한을 부여합니다. |
ElasticsearchHttpPostPolicy | Amazon OpenSearch Service에 POST 권한을 부여합니다. |
EventBridgePutEventsPolicy | EventBridge로 이벤트를 보낼 수 있는 권한을 부여합니다. |
FilterLogEventsPolicy | 지정된 로그 그룹에서 CloudWatch Logs 이벤트를 필터링할 수 있는 권한을 부여합니다. |
FirehoseCrudPolicy | Firehose 전송 스트림을 생성, 쓰기, 업데이트 및 삭제할 수 있는 권한을 부여합니다. |
FirehoseWritePolicy | Firehose 전송 스트림에 쓸 수 있는 권한을 부여합니다. |
KinesisCrudPolicy | Amazon Kinesis 스트림을 생성, 게시 및 삭제할 수 있는 권한을 부여합니다. |
KinesisStreamReadPolicy | Amazon Kinesis 스트림을 나열하고 읽을 수 있는 권한을 부여합니다. |
KMSDecryptPolicy | AWS Key Management Service(AWS KMS) 키로 복호화할 수 있는 권한을 부여합니다. |
KMSEncryptPolicy | AWS Key Management Service(AWS KMS) 키로 암호화할 수 있는 권한을 부여합니다. |
LambdaInvokePolicy | AWS Lambda 함수, 별칭 또는 버전을 호출할 수 있는 권한을 부여합니다. |
MobileAnalyticsWriteOnlyAccessPolicy | 모든 애플리케이션 리소스에 이벤트 데이터를 넣을 수 있는 쓰기 전용 권한을 부여합니다. |
OrganizationsListAccountsPolicy | 하위 계정 이름 및 ID를 나열할 수 있는 읽기 전용 권한을 부여합니다. |
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(S3) 버킷에 있는 객체를 읽을 수 있는 읽기 전용 권한을 부여합니다. |
S3WritePolicy | Amazon S3 버킷에 객체를 쓸 수 있는 쓰기 권한을 부여합니다. |
SageMakerCreateEndpointConfigPolicy | SageMaker에서 엔드포인트 구성을 생성할 수 있는 권한을 부여합니다. |
SageMakerCreateEndpointPolicy | SageMaker에서 엔드포인트를 생성할 수 있는 권한을 부여합니다. |
ServerlessRepoReadWriteAccessPolicy | AWS Serverless Application Repository 서비스에서 애플리케이션을 생성하고 나열할 수 있는 권한을 부여합니다. |
SESBulkTemplatedCrudPolicy | 이메일, 템플릿 이메일, 템플릿 대량 이메일을 보내고 자격 증명을 확인할 수 있는 권한을 부여합니다. |
SESBulkTemplatedCrudPolicy_v2 | Amazon SES 이메일, 템플릿 기반 이메일, 템플릿 형식의 대량 이메일을 보내고 ID를 확인할 수 있는 권한을 부여합니다. |
SESCrudPolicy | 이메일을 보내고 ID를 확인할 수 있는 권한을 부여합니다. |
SESEmailTemplateCrudPolicy | Amazon SES 이메일 템플릿을 만들고, 가져오고, 나열하고, 업데이트하고, 삭제할 수 있는 권한을 부여합니다. |
SESSendBouncePolicy | Amazon Simple Email Service(Amazon SES) ID에 대한 SendBounce 권한을 부여합니다. |
SNSCrudPolicy | Amazon SNS 주제를 만들고, 게시하고, 구독할 수 있는 권한을 부여합니다. |
SNSPublishMessagePolicy | Amazon Simple Notification Service(Amazon SNS) 주제에 이벤트 메시지 게시 |
SQSPollerPolicy | Amazon Simple Queue Service(Amazon SQS) 대기열을 폴링할 수 있는 권한을 부여합니다. |
SQSSendMessagePolicy | Amazon SQS 대기열에 메시지를 보낼 수 있는 권한을 부여합니다. |
SSMParameterReadPolicy | Amazon EC2 Systems Manager(SSM) 파라미터 스토어의 파라미터에 액세스하여 이 계정에 보안 암호를 로드할 수 있는 권한을 부여합니다. 파라미터 이름에 슬래시 접두사가 없을 때 사용합니다. |
SSMParameterWithSlashPrefixReadPolicy | Amazon EC2 Systems Manager(SSM) 파라미터 스토어의 파라미터에 액세스하여 이 계정에 보안 암호를 로드할 수 있는 권한을 부여합니다. 파라미터 이름에 슬래시 접두사가 있는 경우 사용합니다. |
StepFunctionsExecutionPolicy | Step Functions 상태 머신 실행을 시작하기 위해 권한을 제공합니다. |
TextractDetectAnalyzePolicy | Amazon Textract를 사용하여 문서를 탐지하고 분석할 수 있는 액세스 권한을 제공합니다. |
TextractGetResultPolicy | Amazon Textract에서 문서를 탐지하고 분석할 수 있는 액세스 권한을 제공합니다. |
TextractPolicy | Amazon Textract에 대한 모든 액세스 권한을 부여합니다. |
VPCAccessPolicy | 탄력적 네트워크 인터페이스를 생성, 삭제, 설명 및 분리할 수 있는 액세스 권한을 제공합니다. |
문제 해결
SAM CLI error: "Must specify valid parameter values for policy template '<policy-template-name>'"
sam build
를 실행하면 다음 오류가 표시됩니다.
"Must specify valid parameter values for policy template '<policy-template-name>'"
즉, 자리 표시자 값이 없는 정책 템플릿을 선언할 때 빈 객체를 전달하지 않았습니다.
이 문제를 해결하려면 다음 CloudWatchPutMetricPolicy 예제와 같이 정책을 선언합니다.
MyFunction: Policies: - CloudWatchPutMetricPolicy: {}