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"] }
}
}
}
:
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. –, .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 –