AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
CloudFormation에서 “Unable to validate the following destination configurations.” 오류를 해결하려면 어떻게 해야 합니까?
AWS 서비스를 구독했는데 AWS CloudFormation에서 "Unable to validate the following destination configurations."라는 오류 메시지를 받았습니다.
해결 방법
검증할 수 없음 오류를 해결하려면 해당 구성에 대한 문제 해결 조치를 취하십시오.
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
Lambda 알림 구성 문제
Lambda 함수 ARN이 존재하지 않거나 유효하지 않음
Amazon Simple Storage Service(Amazon S3) 버킷이 AWS Lambda 속성 LambdaConfigurations를 사용하는 경우 lambda 함수가 존재하지 않음 오류가 발생할 수 있습니다. 이 오류는 CloudFormation 템플릿에서 Lambda 함수에 대해 구성된 ARN이 존재하지 않거나 유효하지 않은 경우 발생합니다.
Lambda 함수가 존재하는지 확인하려면 get-function 명령을 실행하십시오.
aws lambda get-function --function-name YOUR-FUNCTION-ARN-VALUE
참고: YOUR-FUNCTION-ARN-VALUE를 Lamda 함수의 ARN으로 바꾸십시오.
명령 출력에서 오류가 발생하면 Lambda 함수의 ARN이 유효하지 않거나 존재하지 않는 것입니다. 올바른 ARN을 포함하도록 템플릿을 업데이트하십시오. 그런 다음 업데이트된 템플릿으로 새 스택을 생성하거나 기존 스택을 업데이트합니다.
Lambda 함수에 Amazon S3를 호출할 권한이 없음
요청한 리소스가 존재하지 않음 오류가 발생하면 Lambda 함수에 필수 권한이 없는 것입니다. 이 문제를 해결하려면 다음 단계를 완료하십시오.
- Lambda 함수 권한을 확인하려면 get-policy 명령을 실행합니다.
참고: FUNCTION-ARN-VALUE를 함수의 ARN으로, YOUR-REGION을 AWS 리전으로 바꾸십시오.aws lambda get-policy --function-name YOUR-FUNCTION-ARN-VALUE --region YOUR-REGION - Lambda 함수가 Amazon S3를 호출하도록 허용하려면 CloudFormation 템플릿을 업데이트하여 다음 권한을 연결하십시오.
참고: FUNCTION-ARN-VALUE를 함수의 ARN으로, AccountID를 함수를 소유한 AWS 계정으로 바꾸십시오. AWS::AccountId 가상 파라미터를 사용하여 CloudFormation이 스택을 생성하는 계정 ID를 자동으로 대체할 수 있습니다.S3Permission: Type: AWS::Lambda::Permission Properties: FunctionName: YOUR-FUNCTION-ARN-VALUE Action: lambda:InvokeFunction Principal: s3.amazonaws.com SourceAccount: !Ref 'AWS::AccountId' - CloudFormation이 Lambda 함수에 필요한 권한을 부여한 후에만 S3 버킷을 생성하도록 하려면 DependsOn 속성을 추가하십시오.
참고: FUNCTION-ARN-VALUE를 함수의 ARN으로 바꾸십시오.S3Bucket: Type: AWS::S3::Bucket DependsOn: "S3Permission" Properties: NotificationConfiguration: LambdaConfigurations: - Function: YOUR-FUNCTION-ARN-VALUE Event: "s3:ObjectCreated:Put"
Amazon SNS 알림 구성 관련 문제
Amazon SNS ARN이 존재하지 않거나 유효하지 않음
S3 버킷이 TopicConfigurations 속성을 사용하는 경우 다음 대상 구성을 검증할 수 없음 오류가 발생할 수 있습니다. 이 오류는 Amazon Simple Notification Service(Amazon SNS) 주제가 존재하지 않거나 유효하지 않을 때 발생합니다. ARN 형식 및 값은 Amazon SNS 주제의 ARN과 일치해야 합니다.
계정에 SNS 주제의 ARN이 존재하는지 확인하려면 list-topics 명령을 실행합니다.
aws sns list-topics \ --region YOUR-REGION \ --query "Topics[?TopicArn=='YOUR-TOPIC-ARN-VALUE']"
참고: YOUR-REGION을 해당 리전으로, YOUR-TOPIC-ARN-VALUE를 주제의 ARN으로 바꾸십시오.
명령 출력에서 레코드를 받지 못했다면 SNS 주제가 존재하지 않거나 유효하지 않은 것입니다. 이 문제를 해결하려면 SNS 주제를 생성하십시오. TopicConfigurations 속성에 올바른 주제 ARN을 입력했는지 확인하십시오.
SNS 주제에 필수 액세스 정책이 없음
SNS 주제에 필요한 액세스 정책이 있는지 확인하려면 다음 단계를 완료하십시오.
- SNS 주제에 연결된 액세스 정책을 확인하려면 get-topic-attributes 명령을 실행합니다.
참고: YOUR-TOPIC-ARN-VALUE를 주제 ARN으로, YOUR-REGION을 해당 리전으로 바꾸십시오.aws sns get-topic-attributes \ --topic-arn YOUR-TOPIC-ARN-VALUE \ --region YOUR-REGION \ --query 'Attributes.Policy' - 액세스 정책에서 Amazon S3 서비스가 주제에 게시할 수 있도록 허용해야 합니다. 정책에 이러한 권한이 없는 경우 다음 권한을 포함하도록 주제의 액세스 정책을 편집하십시오.
참고: YOUR-TOPIC-ARN-VALUE를 주제 ARN으로 바꾸십시오.{ "Sid": "S3AccessForNotification", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "YOUR-TOPIC-ARN-VALUE" } - 이제 새 스택을 만들거나 기존 스택을 업데이트할 수 있는지 확인합니다.
SNS 주제와 연결된 AWS KMS 키 정책 관련 문제
AWS Key Management Service(AWS KMS) 정책에서 Amazon S3가 AWS KMS 키에 액세스할 수 있도록 허용해야 합니다. 암호화 구성 및 최소 필수 정책을 보려면 다음 단계를 완료하십시오.
SNS 주제가 AWS KMS 키로 암호화되었는지 확인하려면 get-topic-attributes 명령을 실행합니다.
aws sns get-topic-attributes \ --topic-arn YOUR-TOPIC-ARN-VALUE \ --region YOUR-REGION \ --query "Attributes.KmsMasterKeyId"
참고: YOUR-TOPIC-ARN-VALUE를 주제 ARN으로, YOUR-REGION을 해당 리전으로 바꾸십시오. SNS 주제가 암호화된 경우 명령 출력에 AWS KMS 키 ARN이 표시됩니다.
AWS KMS 키 정책을 확인하려면 get-key-policy 명령을 실행합니다.
aws kms get-key-policy \ --key-id YOUR-KMS-KEY-ARN \ --policy-name default \ --region YOUR-REGION | jq -r '.Policy' | jq .
참고: YOUR-KMS-KEY-ARN을 AWS KMS 키 ARN으로, YOUR-REGION을 해당 리전으로 바꾸십시오. 가독성을 높이기 위해 jq 명령을 사용하여 정책 내용을 JSON 형식으로 표시하는 것이 모범 사례입니다. 자세한 내용은 jq 웹 사이트에서 ./jq를 참조하십시오.
다음 예시 정책은 필요한 최소 AWS KMS 키 정책을 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": ["kms:GenerateDataKey*", "kms:Decrypt"], "Resource": "YOUR-KMS-KEY-ARN" } ] }
참고: YOUR-KMS-KEY-ARN을 AWS KMS 키 ARN으로 바꾸십시오.
정책에 필요한 권한이 없는 경우 AWS KMS 키 정책을 업데이트하십시오.
Amazon SQS 알림 구성 관련 문제
Amazon SQS ARN이 존재하지 않거나 유효하지 않음
S3 버킷이 QueueConfigurations 속성을 사용하는 경우 SQS 대기열이 존재하지 않음 오류가 발생할 수 있습니다. 이 오류는 Amazon Simple Queue Service(Amazon SQS) ARN이 존재하지 않거나 유효하지 않을 때 발생합니다.
계정에 Amazon SQS 대기열이 있는지 확인하려면 list-queues 명령을 실행합니다.
aws sqs list-queues --queue-name-prefix YOUR-SQS-QUEUE-NAME --region YOUR-REGION
참고: YOUR-SQS-QUEUE-NAME을 SQS 대기열 이름으로, YOUR-REGION을 리전으로 바꾸십시오.
Amazon SQS 대기열이 없는 경우 새 대기열을 생성하거나 기존 대기열로 템플릿을 업데이트합니다.
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref S3Bucket Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: BucketOwnerFullControl
SQS 대기열에 필요한 액세스 정책이 없음
SQS 대기열에 필요한 액세스 정책이 있는지 확인하려면 AWS CLI 또는 CloudFormation 콘솔을 사용할 수 있습니다.
AWS CLI를 사용하여 대기열의 액세스 정책을 확인하려면 다음 단계를 완료하십시오.
- SQS 대기열 정책을 확인하려면 get-queue-attributes 명령을 실행합니다.
참고: YOUR-SQS-QUEUE-NAME을 해당 SQS 대기열 이름으로, YOUR-REGION을 해당 리전으로, YOUR-SQS-QUEUE-URL을 해당 대기열 URL로 바꾸십시오. 가독성을 높이기 위해 jq 명령을 사용하여 정책 내용을 JSON 형식으로 표시하는 것이 모범 사례입니다. 자세한 내용은 jq 웹 사이트에서 ./jq를 참조하십시오.aws sqs get-queue-attributes \ --queue-url YOUR-SQS-QUEUE-URL \ --region YOUR-REGION \ --attribute-names Policy | jq . - 정책에 Amazon S3에 대한 액세스 권한이 없는 경우 JSON 파일에 새 액세스 정책을 생성하십시오.
참고: YOUR-SQS-QUEUE-ARN을 대기열 ARN으로 바꾸십시오.{"Policy": "{\"Version\":\"2012-10-17\",\"Statement\": [{\"Sid\":\"S3AccessForNotification\",\"Effect\":\"Allow\",\"Principal\": {\"Service\":\"s3.amazonaws.com\"},\"Action\":\"SQS:SendMessage\",\"Resource\":\"YOUR-SQS-QUEUE-ARN\"}]}"} - 정책을 업데이트하려면 set-queue-attributes 명령을 실행합니다.
참고: YOUR-SQS-QUEUE-URL을 대기열 URL로, sqs-policy.json을 정책 JSON 파일로 바꾸십시오.aws sqs set-queue-attributes --queue-url YOUR-SQS-QUEUE-URL --attributes file://sqs-policy.json
CloudFormation 콘솔을 사용하여 대기열의 액세스 정책을 확인하려면 다음 리소스를 포함하도록 CloudFormation 템플릿을 업데이트하십시오.
SampleSQSPolicy: Type: AWS::SQS::QueuePolicy Properties: Queues: - YOUR-SQS-QUEUE-URL PolicyDocument: Statement: - Action: - "SQS:SendMessage" Effect: "Allow" Resource: YOUR-SQS-QUEUE-ARN Principal: Service: - "s3.amazonaws.com"
참고: YOUR-SQS-QUEUE-URL을 대기열 URL로, YOUR-SQS-QUEUE-ARN을 대기열 ARN으로 바꾸십시오.
정책을 생성하거나 업데이트한 후 이제 새 스택을 생성하거나 기존 스택을 업데이트할 수 있는지 확인합니다.
자세한 내용은 Amazon SQS 대기열에 액세스하려면 어떤 권한이 필요합니까? 그래도 문제가 발생하면 Amazon SQS 오류 "잘못된 파라미터 정책 값"을 해결하려면 어떻게 해야 합니까?를 참조하십시오.
SQS 대기열과 관련된 AWS KMS 키 정책 관련 문제
AWS KMS 키 정책 관련 문제를 해결하려면 다음 단계를 완료하십시오.
- SQS 대기열 URL을 가져오려면 list-queues 명령을 실행합니다.
참고: YOUR-SQS-QUEUE-NAME을 SQS 대기열 이름으로, YOUR-REGION을 리전으로 바꾸십시오.aws sqs list-queues --queue-name-prefix YOUR-SQS-QUEUE-NAME --region YOUR-REGION - AWS KMS 키 ID를 가져오려면 get-queue-attributes 명령을 실행합니다.
참고: YOUR-SQS-QUEUE-URL을 대기열 URL로, YOUR-REGION을 리전으로 바꾸십시오.aws sqs get-queue-attributes \ --queue-url YOUR-SQS-QUEUE-URL \ --region YOUR-REGION \ --attribute-names KmsMasterKeyId - AWS KMS 키 ARN을 가져오려면 describe-key 명령을 실행합니다.
참고: YOUR-KMS-KEY-ID를 키 ID로 바꾸십시오.aws kms describe-key --key-id YOUR-KMS-KEY-ID - 전체 키 정책을 보려면 get-key-policy 명령을 실행합니다.
참고: YOUR-KMS-KEY-ARN을 AWS KMS 키 ARN으로, YOUR-REGION을 해당 리전으로 바꾸십시오.aws kms get-key-policy \ --key-id YOUR-KMS-KEY-ARN \ --policy-name default \ --region YOUR-REGION - 출력에서 정책이 Amazon S3에서 AWS KMS 키를 사용하도록 허용하는지 확인합니다. 권한 예시:
참고: YOUR-KMS-KEY-ARN을 AWS KMS 키의 ARN으로 바꾸십시오.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": ["kms:GenerateDataKey*", "kms:Decrypt"], "Resource": "YOUR-KMS-KEY-ARN" } ] }
정책에 필요한 권한이 없는 경우 키 정책을 업데이트합니다.
리소스 간 순환 종속성
중요: SNS 주제를 S3 이벤트 알림에 구독하기 전에 필요한 권한을 가진 AWS::SNS::TopicPolicy를 생성해야 합니다. 구독을 생성하기 전에 주제 정책이 있어야 합니다.
주제 정책을 먼저 생성하려면 AWS::S3::Bucket 리소스의 DependsOn 속성을 사용해야 합니다. 이 속성은 버킷보다 먼저 주제 정책을 생성합니다. 또는 두 개의 스택 작업을 사용하여 먼저 모든 리소스를 생성한 다음 NotificationConfiguration 속성을 포함하도록 S3Bucket 리소스를 업데이트할 수 있습니다. 다음 조치 중 하나를 수행하십시오.
CloudFormation 템플릿에서 BucketName의 값을 지정
CloudFormation 템플릿의 S3Bucket 리소스에 있는 BucketName 속성에 S3 버킷의 정적 이름을 사용합니다. 정적 S3 버킷 이름은 SNS 주제 정책과 Amazon S3 간의 본질적인 종속성을 제거합니다.
중요: S3 버킷 이름은 전역적으로 고유해야 합니다.
다음 예제 CloudFormation 템플릿은 BucketName 속성에 대해 하드코딩된 -Bucket-Name- 값을 지정합니다.
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - '-Bucket-Name-' Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket DependsOn: - SNSTopicPolicy Properties: AccessControl: BucketOwnerFullControl BucketName: "-Bucket-Name-" NotificationConfiguration: TopicConfigurations: - Topic: !Ref SNSTopic Event: s3:ObjectCreated:Put
참고: 버킷 이름을 bucket-name으로 바꾸십시오. S3Bucket 리소스에는 SNSTopicPolicy로 설정된 명시적 DependsOn 속성이 있습니다. 이 속성은 템플릿이 S3Bucket 리소스보다 먼저 SNSTopicPolicy 리소스를 생성하도록 지정합니다.
버킷 이름에 파라미터 사용
파라미터를 사용하면 이름이 다른 S3 버킷에 동일한 CloudFormation 템플릿을 사용할 수 있습니다. 스택을 생성하는 동안 ParamBucketName 파라미터의 값을 설정할 수 있습니다. 정책 예시:
Parameters: paramBucketName: Type: String Description: Bucket Name Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref paramBucketName Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket DependsOn: - SNSTopicPolicy Properties: AccessControl: BucketOwnerFullControl BucketName: !Ref paramBucketName NotificationConfiguration: TopicConfigurations: - Topic: !Ref SNSTopic Event: s3:ObjectCreated:Put
참고: 위 예시에서 S3Bucket 리소스에는 SNSTopicPolicy로 설정된 명시적 DependsOn 속성이 있습니다.
스택을 생성한 다음 스택 업데이트
참고: 이 메서드에서 S3Bucket 리소스는 BucketName 속성을 포함하지 않습니다. 따라서 CloudFormation은 사용자를 위해 고유한 버킷 이름을 생성합니다. 순환 종속성을 피하려면 DependsOn 속성을 사용하지 마십시오.
먼저 스택을 생성하되 S3Bucket 리소스에 NotificationConfiguration 속성을 사용하지 마십시오. 예:
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref S3Bucket Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: BucketOwnerFullControl
S3Bucket 리소스에 NotificationConfiguration 속성을 추가한 다음 스택을 업데이트합니다. 예:
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref S3Bucket Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: BucketOwnerFullControl NotificationConfiguration: TopicConfigurations: - Topic: !Ref SNSTopic Event: s3:ObjectCreated:Put
관련 정보
대상에 이벤트 알림 메시지를 게시할 수 있는 권한 부여
- 언어
- 한국어
