2013-05-28 1 views
5

내 cloudformation 스크립트에서 파일을 검색하려고합니다. 파일을 공개적으로 사용할 수있게하면 정상적으로 작동합니다. 파일이 개인용 인 경우 cfn 스크립트는 실패하지만/var/log /에 404 오류가 있습니다. wget을 통해 파일을 검색하려고하면 적절한 403 오류가 발생합니다.CFN 스크립트에서 보호 된 S3 파일에 어떻게 액세스합니까?

S3에서 개인 파일을 검색하려면 어떻게해야합니까?

내 파일 절은 다음과 같습니다

{ 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:Get*", 
     "s3:List*" 
     ], 
     "Resource": "*" 
    } 
    ] 
} 

답변

5

해결책은이다 :

"Parameters" : { 
    "BucketRole" : { 
    "Description" : "S3 role for access to bucket", 
    "Type" : "String", 
    "Default" : "S3Access", 
    "ConstraintDescription" : "Must be a valid IAM Role" 
    } 
} 

    "AWS::CloudFormation::Authentication": { 
     "default" : { 
     "type": "s3", 
     "buckets": [ "myConfigBucket" ], 
     "roleName": { "Ref" : "BucketRole" } 
     } 
    }, 

내 IAM 역할은 다음과 같습니다

"files" : { 
     "/etc/httpd/conf/httpd.conf" : { 
     "source" : "https://s3.amazonaws.com/myConfigBucket/httpd.conf" 
     } 
    }, 

내가 인증 절하고 적절한 매개 변수를 추가 인스턴스 만들기에 IamInstanceProfile 속성을 추가하십시오.

"Parameters" : { 
    ... 
    "RoleName" : { 
     "Description" : "IAM Role for access to S3", 
     "Type" : "String", 
     "Default" : "DefaultRoleName", 
     "ConstraintDescription" : "Must be a valid IAM Role" 
    } 
    }, 

    "Resources" : { 
    "InstanceName" : { 
     "Type" : "AWS::EC2::Instance", 
     "Properties" : { 
     "ImageId"    : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "64"] }, 
     "InstanceType"  : { "Ref" : "InstanceType" }, 
     "SecurityGroups"  : [ {"Ref" : "SecurityGroup"} ], 
     "IamInstanceProfile" : { "Ref" : "RoleName" }, 
     "KeyName"    : { "Ref" : "KeyName" } 
     } 
    }, 
    ... 
관련 문제