如何通过AWS CLI将独立HTML文件内容导入SES邮件模板?
解决AWS SES模板引用外部HTML/文本文件的问题
AWS CLI的--cli-input-json参数不会自动解析JSON文件内部的file://路径引用,所以你直接写路径会被当成字符串存入模板。以下是几种可行的解决方案:
方法1:用jq动态生成包含文件内容的JSON
jq是轻量的JSON处理工具,能读取外部文件内容并注入到JSON结构中,是最可靠的方案。
步骤:
- 先创建基础的
template.json(保留除HtmlPart/TextPart外的其他字段):
{ "Template": { "TemplateName": "你的模板名称", "SubjectPart": "邮件主题内容", "HtmlPart": "", "TextPart": "" } }
- 执行以下命令,用jq替换空字段为文件内容,再传给AWS CLI:
aws ses create-template --cli-input-json "$(jq --arg html "$(cat template.html)" --arg text "$(cat template.txt)" '.Template.HtmlPart = $html | .Template.TextPart = $text' template.json)"
方法2:用sed替换JSON中的占位符
如果没有jq,可以用sed替换JSON里的占位符为文件内容。
步骤:
- 修改
template.json,用占位符标记需要替换的位置:
{ "Template": { "TemplateName": "你的模板名称", "SubjectPart": "邮件主题内容", "HtmlPart": "{{HTML_CONTENT}}", "TextPart": "{{TEXT_CONTENT}}" } }
- 执行sed替换命令,将占位符替换为文件内容后直接传给AWS CLI:
sed -e "/{{HTML_CONTENT}}/{r template.html" -e "d}" -e "/{{TEXT_CONTENT}}/{r template.txt" -e "d}" template.json | aws ses create-template --cli-input-json -
方法3:直接在命令行拼接内容(需注意转义)
如果不想依赖外部工具,可以直接在--template参数里拼接文件内容,但要注意处理HTML中的单引号等特殊字符:
aws ses create-template \ --template '{ "TemplateName": "你的模板名称", "SubjectPart": "邮件主题内容", "HtmlPart": "'"$(cat template.html)"'", "TextPart": "'"$(cat template.txt)"'" }'
关键说明
AWS CLI的file://语法仅在直接作为命令行参数值时生效(比如aws ses send-email --html file://template.html),但JSON文件内部的字符串会被当作普通文本处理,不会自动解析路径读取内容。
内容的提问来源于stack exchange,提问作者Krushnal Patel
相关产品推荐
相关产品推荐

