जवाबों:
वर्तमान में यह संभव नहीं है, इसके बारे में चर्चा के लिए https://forums.aws.amazon.com/thread.jspa?threadID=162252 देखें ।
संपादित करें: लैंबडा @ एज ने इसे संभव बना दिया है, नीचे देखें।
इस पर एक अपडेट ...
HTTP रिस्पांस हेडर को अब लैंबडा @ एज फंक्शंस के जरिए कस्टमाइज किया जा सकता है। कृपया दस्तावेज़ के लिए http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html देखें । इसे आज़माने के लिए, AWS कंसोल में एक नया लंबो फंक्शन बनाएं। भाषा के लिए 'एज Nodge.js 4.3' चुनें और क्लाउडफ्रंट-संशोधित-प्रतिक्रिया-हेडर टेम्पलेट की तलाश करें। यदि आप ऐसा करते हैं, तो लैम्ब्डा आपसे पूछेगा कि कौन सा CloudFront वितरण और ईवेंट को फ़ंक्शन को लागू करने के लिए। ध्यान दें कि आप किसी भी समय क्लाउडफ्रंट व्यवहार टैब पर जाकर इसे संपादित या बदल सकते हैं।
यहां एक उदाहरण लंबोदर समारोह है ...
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
response.headers['Strict-Transport-Security'] = 'max-age=2592000; includeSubDomains';
callback(null, response);
};
एंड्रयू के जवाब में जोड़ने के लिए:
मैंने सिर्फ यह और कुछ नोट्स की कोशिश की है: अब कोई विशेष एज नोडज रनटाइम नहीं है, लेकिन लैम्ब्डा को एन वर्जीनिया क्षेत्र में बनाने और क्लाउडफ्रंट मूल-प्रतिक्रिया या दर्शक-प्रतिक्रिया द्वारा ट्रिगर करने की आवश्यकता है ।
बॉक्स से बाहर कोड किसी भी अधिक काम करने के लिए नहीं लगता है। यह ERR_CONTENT_DECODING_FAILED देता है।
समाधान इस प्रकार है कि वाक्यविन्यास का उपयोग किया जाए:
response.headers['Strict-Transport-Security'] = [ { key: 'Strict-Transport-Security', value: "max-age=31536000; includeSubdomains; preload" } ];
response.headers['X-Content-Type-Options'] = [ { key: 'X-Content-Type-Options', value: "nosniff" } ];
सही है, क्योंकि लैंबडा @ एज आमतौर पर उपलब्ध है, उन्होंने इसे एन वर्जीनिया में प्रतिबंधित कर दिया है और एक को नोड 4.3 के बजाय 6.10 चुनना है।
नीचे हमारे कोड का प्रासंगिक हिस्सा (हमारे उद्देश्य के लिए यह हमेशा 302 स्थायी पुनर्निर्देशित होगा):
'use strict';
exports.handler = (event, context, callback) => {
var request = event.Records[0].cf.request;
const response = {
status: '302',
statusDescription: '302 Found',
httpVersion: request.httpVersion,
headers: {
Location: [
{
"key":"Location",
"value":"someURL"
}
],
'Strict-Transport-Security': [
{
"key":"Strict-Transport-Security",
"value":'max-age=63072000; includeSubDomains; preload'
}
],
},
};
callback(null, response);
};
CloudFront पर विभिन्न व्यवहारों को कॉन्फ़िगर करके आप सीमित कर सकते हैं कि कौन से अनुरोध लैम्बडा फ़ंक्शन को कॉल करेंगे।