2013-12-17 21 views
15
Çalışıyorum

oluşturun. Bir komut dosyası oluşturdum ve AWS bulut oluşturma konsolunda yığın şablon komut dosyasını çalıştırdım.AWS - Bulut oluşumu Senaryo komut dosyalarını kullanarak kova ve dağıtım AWS oluşturulması üzerinde S3 kova ve Dağıtımı

Senaryoyu ve kurallı kimliği kullanarak S3 bölüme ilişkin bucketpolicy oluşturma. Bir grup kuralı oluşturduktan sonra, betikte dinamik olarak "OriginAccessIdentity" öğesine atamak istiyorum. Kova politikasından oluşturulan kimliği "OriginAccessIdentity" özelliklerine eklemek istiyorum.

nasıl bu işlevselliği elde etmek için?

Senaryo:

{ 
    "AWSTemplateFormatVersion" : "2010-09-09", 

    "Description" : "AWS CloudFormation Template S3_With_CloudFront_Distribution", 

    "Parameters" : { 
     "bucketname" : { 
      "Type" : "String", 
      "Description" : "test"   
     }, 

     "cannonicalid" : { 
      "Type" : "String", 
      "Description" : "234213523145314534523452345234523452345"  
     } 
    }, 

    "Conditions" : { 
     "CreateProdResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "dev"]} 
    }, 

    "Resources" : { 
     "testbucket" : { 
      "Type" : "AWS::S3::Bucket", 
      "Properties" : {  
      "BucketName" : { "Ref" : "bucketname" },   
      "WebsiteConfiguration" : { 
       "IndexDocument" : "index.html"    
      } 
      } 
     }, 


     "mybucketpolicy" : { 
      "Type" : "AWS::S3::BucketPolicy", 
      "Properties" : { 
       "PolicyDocument" : { 
       "Id" : "MyPolicy", 
       "Statement" : [ { 
        "Sid" : "Grant a CloudFront Origin Identity access to support private content", 
        "Action" : [ "s3:GetObject" ], 
        "Effect" : "Allow", 
        "Resource" : { "Fn::Join" : [ 
          "", [ "arn:aws:s3:::", { "Ref" : "testbucket" } , "/*" ] 
         ] }, 
        "Principal" : { 
         "CanonicalUser":{ "Ref" : "cannonicalid" } 
        } 
       } ] 
       }, 
       "Bucket" : { "Ref" : "testbucket" } 
       } 
     }, 


     "testdistribution" : { 
      "Type" : "AWS::CloudFront::Distribution", 
      "Properties" : { 
       "DistributionConfig" : { 
        "Origins" : [ { 
          "Id" : "S3Origin", 
          "DomainName" : { "Fn::GetAtt" : [ "testbucket", "DomainName" ] }, 
          "S3OriginConfig" : { 
           "OriginAccessIdentity" : "How to configure the id dynamically here" 
          } 
         } 
        ], 

        "Enabled" : "true", 
        "Comment" : "", 
        "DefaultRootObject" : "index.html",      
        "Aliases" : [ "test.com" ], 

        "CacheBehaviors" : [ { 
          "TargetOriginId" : "S3Origin", 
          "ForwardedValues" : { 
           "QueryString" : "false" 
          },        
          "ViewerProtocolPolicy" : "allow-all", 
          "MinTTL" : "1", 
          "PathPattern" : "resources/*.json" 
         } 
        ], 
        "DefaultCacheBehavior" : { 
         "TargetOriginId" : "S3Origin", 
         "ForwardedValues" : { 
          "QueryString" : "false" 
         },      
         "ViewerProtocolPolicy" : "allow-all", 
         "MinTTL" : "1" 
        } 
       } 
      } 
     } 
    }, 
    "Outputs" : { 
     "DistributionId" : { 
      "Description" : "CloudFront Distribution Id", 
      "Value" : { "Ref" : "testdistribution" } 
     }, 
     "DistributionName" : { 
      "Description" : "URL to access the CloudFront distribution", 
      "Value" : { "Fn::Join" : [ "", ["http://", {"Fn::GetAtt" : ["testdistribution", "DomainName"]} ]]} 
     }, 
     "S3OriginDNSName" : { 
      "Description" : "Name of S3 bucket to hold website content.", 
      "Value" : { "Fn::GetAtt" : [ "testbucket", "DomainName"] } 
     } 
    } 
} 
+0

:

"OriginAccessId": { "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity", "Properties": { "CloudFrontOriginAccessIdentityConfig": { "Comment": "MyDescription" } } } 

Birlikte dağıtım config başvurabilirsiniz: Bir köken erişim kimlik kaynakla

olarak tanımlanır Bu nedenle, bulutta kullanıcı oluşturmak için biraz zaman alabilir. Bu yüzden, .NET kodunu kullanarak OAI kullanıcısını yaratıyoruz, daha sonra OAI kullanıcısını betikte kullanıyoruz. OAI kullanıcısının oluşturulması için daha iyi bir çözüm varsa lütfen bana bildirin. –

+0

, .NET kodunu kullanarak OAI oluşturmak için URL'ye bakın. http://irfanshirur.blogspot.in/2014/01/create-oai-and-canonical-user-using-net.html –

cevap

6

Bir Menşei Erişim Kimlik CloudFormation ile oluşturulamaz. Cloudformation aracılığıyla kullanılabilen tek CloudFront kaynağı AWS::CloudFront::Distribution kaynağıdır.

Sen yığını oluşturulduğunda varolan OAI geçmek için bir parametre kullanarak şablonunda bir OAI bir başvuru kodlama sert önleyebilirsiniz

. Bu parametreyi S3OriginConfig anahtarıyla ilişkili S3Origin türünde OriginAccessIdentity değeri olarak kullanabilirsiniz.

Bu ideal değildir, ancak bu Şablonlarınız daha genel olmasını sağlar.

2

2 Kasım yana 2017 CloudFormation bu kullanarak aws :: CloudFront :: CloudFrontOriginAccessIdentity kaynak destekler. bulut oluşumunda bir OAI kullanıcı oluşturmak için onun tavsiye edilmez komut dosyalarını kullanma

"OriginAccessIdentity" : { 
    "Fn::Sub": "origin-access-identity/cloudfront/${OriginAccessId}" 
} 
İlgili konular