(अद्यतन: Aug 9 2016 के रूप में, एडब्ल्यूएस CloudFormation अब AcmCertificateArn
संपत्ति का उपयोग कर एसीएम का समर्थन करता है, तो कस्टम नीचे वर्णित संसाधन अब जरूरत है।)
हालांकि एडब्ल्यूएस :: CloudFront :: वितरण संसाधन अभी तक ACMCertificateArn प्रॉपर्टी का समर्थन करने के लिए अपडेट नहीं किया गया है, आधिकारिक संसाधन अपडेट होने तक सीधे AWS API का उपयोग करके आवश्यक कार्यक्षमता को लागू करने के लिए custom CloudFormation resource का उपयोग करना संभव है।
रायन एस ब्राउन की पोस्ट, CloudFormation To Build A CDN With (Free) Custom SSL देखें जहां वह Custom::CloudFrontAcmAssociation
संसाधन के कार्यान्वयन का वर्णन करता है जो क्लाउडफ्रंट वितरण के साथ एक एसीएम प्रमाण पत्र को संबद्ध करता है। कोड ryansb/acm-certs-cloudformation
पर उपलब्ध है।
इसका उपयोग करने के लिए, आपको क्लाउडफॉर्मेशन संसाधन का कार्यान्वयन AWS Lambda फ़ंक्शन के माध्यम से उपलब्ध कराने की आवश्यकता है। रयान के कार्यान्वयन पहले से ही एक सार्वजनिक S3 बाल्टी के लिए प्रकाशित किया जाता है, तो आप इस सीधे परीक्षण प्रयोजनों के लिए अपने CloudFormation टेम्पलेट में तो जैसे देख सकते हैं:
"AcmAssociationFunction": {
"Type": "AWS::Lambda::Function",
"Properties": {
"Handler": "cloudfront_associator.handler",
"MemorySize": 128,
"Runtime": "python2.7",
"Code": {
"S3Bucket": "demos.serverlesscode.com",
"S3Key": "acm-certificate-resource-functions.zip"
},
"Role": {"Fn::GetAtt": ["ExecRole", "Arn"]},
"Timeout": 300
}
},
Lambda::Function
संसाधन एक IAM सेवा भूमिका पर एक निर्भरता है और को सौंपने के लिए नीति जुड़े लैम्ब्डा समारोह के लिए आवश्यक अनुमतियाँ (ExecRole
संदर्भ ऊपर), वह भी जोड़ सकते हैं ताकि आप की जरूरत करने के लिए:
"ExecRolePolicies": {
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": "ExecRolePolicy",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"acm:*",
"cloudfront:List*",
"cloudfront:Get*",
"cloudfront:UpdateDistribution"
],
"Resource": [ "*" ],
"Effect": "Allow"
},
{
"Action": [ "logs:*" ],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
}
]
},
"Roles": [{"Ref": "ExecRole"}]
}
},
"ExecRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": ["sts:AssumeRole"],
"Effect": "Allow",
"Principal": {"Service": ["lambda.amazonaws.com"]}
}
]
}
}
},
लैम्ब्डा समारोह के साथ जगह में, अंत में, Custom::CloudFrontAcmAssociation
संसाधन जोड़ने वितरण आईडी प्रदान करने, प्रमाण पत्र ARN, और कस्टम resourc ई लैम्ब्डा समारोह के ARN:
"DistributionCertificateSetting": {
"Type": "Custom::CloudFrontAcmAssociation",
"Properties": {
"DistributionId": {
"Ref": "SiteCDN"
},
"CertificateArn": {
"Ref": "AcmCertificate"
},
"ServiceToken": {
"Fn::GetAtt": [
"AcmAssociationFunction",
"Arn"
]
}
}
},
tldr: अपने CloudFormation टेम्पलेट में सब से ऊपर कोड को कॉपी करें, उचित SiteCDN
और AcmCertificate
गुण सेट (या हार्ड-कोडेड मूल्यों के साथ टेम्पलेट को संपादित), और आप एक कस्टम संसाधन होना चाहिए अमेज़ॅन आधिकारिक क्लाउडफ्रंट संसाधन अपडेट होने तक कामकाज।
शायद यह मामला क्लाउडफॉर्म क्लाउडफ्रंट के लिए एसीएम का समर्थन नहीं करता है। आमतौर पर जब तक क्लाउडॉर्मेशन नई सुविधाओं का समर्थन नहीं करता तब तक एक अंतराल होता है। – imperalix
मुझे इस मामले में संदेह है। उदास। –
शायद आप मेरी प्रतिक्रिया को चिह्नित करने पर विचार कर सकते हैं जिसमें अद्यतन जानकारी को सही उत्तर के रूप में शामिल किया गया है। –