{"id":22991,"date":"2024-02-27T15:01:41","date_gmt":"2024-02-27T06:01:41","guid":{"rendered":"https:\/\/labs.gree.jp\/blog\/?p=22991"},"modified":"2024-03-01T15:31:54","modified_gmt":"2024-03-01T06:31:54","slug":"terraform%e3%81%a7akamai%e9%85%8d%e4%bf%a1%e8%a8%ad%e5%ae%9a%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b","status":"publish","type":"post","link":"https:\/\/labs.gree.jp\/blog\/2024\/02\/22991\/","title":{"rendered":"Terraform\u3067Akamai\u914d\u4fe1\u8a2d\u5b9a\u3092\u4f5c\u3063\u3066\u307f\u308b"},"content":{"rendered":"<p>\u304a\u4e45\u3057\u3076\u308a\u3067\u3059\u3001\u30a4\u30f3\u30d5\u30e9\u306e\u3044\u308f\u306a\u3061\u3083\u3093\u3055\u3093(@xcir)\u3067\u3059\u3002<\/p>\n<p>\u5f0a\u793e\u306f\u8907\u6570\u306eCDN\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u304c\u3001Akamai\u3092\u4e3b\u306b\u5229\u7528\u3057\u3066\u304a\u308a\u591a\u6570\u306e\u914d\u4fe1\u8a2d\u5b9a(\u30d7\u30ed\u30d1\u30c6\u30a3)\u3092\u904b\u7528\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u3053\u308c\u307e\u3067\u306f\u65b0\u898f\u30d7\u30ed\u30d1\u30c6\u30a3\u306fAkamai Control Center(ACC\/\u65e7LUNA)\u3067\u4f5c\u6210\u3057\u3066\u3044\u307e\u3057\u305f\u304c\u3001<br \/>\n\u4eca\u56de\u591a\u6570\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f5c\u308b\u5fc5\u8981\u304c\u3042\u308a\u65e2\u5b58\u3082\u542b\u3081\u3066Terraform\u3067\u904b\u7528\u3092\u884c\u3048\u308b\u3088\u3046\u306b\u3057\u305f\u306e\u3067\u5171\u6709\u3057\u307e\u3059\u3002<\/p>\n<div>\n<h1>\u65e2\u5b58\u30d7\u30ed\u30d1\u30c6\u30a3\u3092terrafrom\u3067apply\u3059\u308b\u307e\u3067<\/h1>\n<div>\n<div>\u307e\u305a\u306f<strong>\u904b\u7528\u306f\u8003\u3048\u305a<\/strong>\u306b\u65e2\u5b58\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306eexport\/\u7de8\u96c6\/terraform apply\/Activate\u3068\u3044\u3046\u4e00\u9023\u306e\u52d5\u4f5c\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/div>\n<div>\n<h2>akamai\/shell\u3092\u5b9f\u884c\u3059\u308b<\/h2>\n<\/div>\n<div>Akamai\u3092\u5916\u90e8\u30c4\u30fc\u30eb\u304b\u3089\u53e9\u304f\u969b\u306b\u306fAPI\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u304c\u5fc5\u8981\u306a\u306e\u3067<a href=\"https:\/\/techdocs.akamai.com\/developer\/docs\/set-up-authentication-credentials\">\u3053\u3061\u3089\u3092\u53c2\u8003<\/a>\u306b\u767a\u884c\u3057\u3066<strong>~\/.edgerc<\/strong>\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/div>\n<div>\u6b21\u306bAkamai\u306e\u64cd\u4f5c\u74b0\u5883\u3092\u3069\u3046\u4f5c\u308b\u304b\u3067\u3059\u304c\u3001\u516c\u5f0f\u306edocker-image(<a href=\"https:\/\/techdocs.akamai.com\/developer\/docs\/about-the-docker-environment\">akamai\/shell<\/a>)\u3092\u4f7f\u3046\u306e\u304c\u697d\u3067\u3059\u3002<\/div>\n<p>akamai\/shell\u306fakamai-cli\u3084terraform\u306a\u3069\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u4f8b\u3048\u3070purge\u3082ACC\u3092\u4f7f\u308f\u305a\u306b\u3067\u304d\u308b\u306e\u3067\u4f55\u304b\u3068\u4fbf\u5229\u3067\u3059\u3002<\/p>\n<\/div>\n<div>\n<pre class=\"lang:sh decode:true \">$ docker run --rm -it --name akamai -v $HOME\/.edgerc:\/root\/.edgerc akamai\/shell\n                ___    __                         _            \n               \/   |  \/ \/______ _____ ___  ____ _(_)           \n              \/ \/| | \/ \/\/_\/ __ `\/ __ `__ \\\/ __ `\/ \/            \n             \/ ___ |\/ ,&lt; \/ \/_\/ \/ \/ \/ \/ \/ \/ \/_\/ \/ \/             \n            \/_\/  |_\/_\/|_|\\__,_\/_\/ \/_\/ \/_\/\\__,_\/_\/              \n===============================================================\n=  Welcome to the Akamai Docker Image                         =\n===============================================================\n=  Project page:                                              =\n=  https:\/\/github.com\/akamai\/akamai-docker                    =\n===============================================================<\/pre>\n<\/div>\n<\/div>\n<div>\n<p>\u8d77\u52d5\u6642\u306e\u6307\u5b9a\u3068\u3057\u3066\u5148\u307b\u3069\u914d\u7f6e\u3057\u305f.edgerc\u3092\/root\/.edgerc\u306b\u30de\u30a6\u30f3\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<h2>\u30d7\u30ed\u30d1\u30c6\u30a3\u306eexport\u3092\u884c\u3046<\/h2>\n<div>\n<div><a href=\"https:\/\/github.com\/akamai\/cli-terraform\">akamai-cli<\/a>\u306e<strong>terraform export-property<\/strong>\u3092\u5229\u7528\u3057\u3066export\u3057\u307e\u3059\u3002<\/div>\n<div>\u305d\u306e\u307e\u307e\u5b9f\u884c\u3059\u308b\u3068\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306bexport\u3055\u308c\u308b\u306e\u3067--tfworkpath\u3067\u51fa\u529b\u5148\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002<\/div>\n<pre class=\"lang:sh decode:true\">Akamai DevOps [\/workdir] &gt;&gt; mkdir your-property-name\nAkamai DevOps [\/workdir] &gt;&gt; akamai -s default terraform export-property --tfworkpath your-property-name your-property-name\nFetching property your-property-name [OK]\nFetching group  [OK]\nFetching property version  [OK]\nFetching property rules  [OK]\nFetching product name  [OK]\nFetching hostnames  [OK]\nFetching activation details  [OK]\nSaving TF configurations  [OK]\nTerraform configuration for property 'your-property-name' was saved successfully<\/pre>\n<\/div>\n<\/div>\n<div>\u3053\u308c\u3067export\u3067\u304d\u307e\u3057\u305f\u3002<\/div>\n<div>\n<pre class=\"lang:sh decode:true\">Akamai DevOps [\/workdir] &gt;&gt; cd your-property-name\/\nAkamai DevOps [\/workdir\/your-property-name] &gt;&gt; find\n.\n.\/property-snippets\n.\/property-snippets\/main.json\n.\/variables.tf\n.\/import.sh\n.\/property.tf\n<\/pre>\n<div>\n<div>\u6700\u5c0f\u69cb\u6210\u3060\u3068\u304a\u305d\u3089\u304f\u3053\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u69cb\u6210\u3068\u306a\u3063\u3066\u304a\u308a\u3001behavior\u306a\u3069\u306e\u8a2d\u5b9a\u306f<strong>.\/property-snippets\/main.json<\/strong>\u306b\u3042\u308a\u307e\u3059\u3002<\/div>\n<div>\n<div id=\"attachment_23005\" style=\"width: 840px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-23005\" class=\"wp-image-23005 size-large\" src=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-830x640.png\" alt=\"\" width=\"830\" height=\"640\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-830x640.png 830w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-519x400.png 519w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-259x200.png 259w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-768x592.png 768w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2.png 1308w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><p id=\"caption-attachment-23005\" class=\"wp-caption-text\">Compressible objects\u3068Enable H2\/H3\u304c\u5b50\u30eb\u30fc\u30eb<\/p><\/div>\n<\/div>\n<div>\n<pre class=\"lang:sh decode:true\">$ ls\nCompressible_objects.json  Enable_H2_H3.json  main.json\n$ grep -A1 -B1 json main.json \n    \"children\": [\n      \"#include:Compressible_objects.json\",\n      \"#include:Enable_H2_H3.json\"\n    ],<\/pre>\n<p>\u307e\u305f\u5b50\u30eb\u30fc\u30eb\u304c\u3042\u308b\u3068\u540c\u4e00\u968e\u5c64\u306b\u5225\u540d\u306ejson\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u305d\u306e\u5834\u5408\u3067\u3082\u57fa\u70b9\u306fmain.json\u3067\u305d\u3053\u304b\u3089include\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n<div>\n<h2>Terraform\u3067apply\u307e\u3067\u884c\u3046<\/h2>\n<\/div>\n<div>\n<div>export\u3055\u308c\u305f\u76f4\u5f8c\u306finit\u3082\u3055\u308c\u3066\u306a\u3044\u72b6\u614b\u306a\u306e\u3067apply\u3067\u304d\u307e\u305b\u3093\u3002<\/div>\n<div>\u305d\u306e\u305f\u3081\u540c\u3058\u30d5\u30a9\u30eb\u30c0\u306b\u3042\u308b<strong>import.sh<\/strong>\u3092\u5b9f\u884c\u3057terraform\u306e\u5b9f\u884c\u74b0\u5883\u3092\u6574\u3048\u307e\u3059\u3002<\/div>\n<pre class=\"lang:sh decode:true\">Akamai DevOps [\/workdir\/your-property-name] &gt;&gt; sh import.sh \n\nInitializing the backend...\n\nInitializing provider plugins...\n...\nyour Terraform state and will henceforth be managed by Terraform.\n<\/pre>\n<div>\u5f8c\u306fmain.json\u3092\u4fee\u6b63\u3057\u3066terraform plan ~ apply\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067\u8a2d\u5b9a\u3092Akamai\u5074\u306b\u53cd\u6620\u3067\u304d\u307e\u3059\u3002<\/div>\n<div>\u305f\u3060\u3053\u308c\u306fActivate\u306f\u3055\u308c\u3066\u304a\u3089\u305a\u3001ACC\u3067\u8a2d\u5b9a\u306e\u4fdd\u5b58\u3092\u3057\u305f\u72b6\u614b\u3068\u540c\u3058\u3067\u3059\u3002<\/div>\n<pre class=\"lang:sh decode:true\">Akamai DevOps [\/workdir\/your-property-name] &gt;&gt; terraform apply\ndata.akamai_property_rules_template.rules: Reading...\n...\nApply complete! Resources: 0 added, 1 changed, 0 destroyed.\n<\/pre>\n<div>\n<h2>\u8a2d\u5b9a\u306eactivate\u3092\u884c\u3046<\/h2>\n<div>\n<div>\u8a2d\u5b9a\u306eactivate\u3092\u884c\u3046\u306b\u306fakamai-cli\u306e<strong>pm activate-version<\/strong>\u3092\u5229\u7528\u3057\u307e\u3059\u3002(pm activate\u3067\u306f\u3042\u308a\u307e\u305b\u3093)<br \/>\n\u3082\u3061\u308d\u3093ACC\u4e0a\u3067\u884c\u3046\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<pre class=\"lang:sh decode:true\">Akamai DevOps [\/workdir\/your-property-name] &gt;&gt; akamai -s default pm activate-version -n staging -p your-property-name\nFollowing activations are now pending:\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502\"PropertyId\"\u2502\"Version\"\u2502\"Network\"\u2502\"Activation Id\"\u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502\"prp_XXXXXX\"\u25021        \u2502\"STAGING\"\u2502XXXXXXXX       \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n<\/pre>\n<div>\n<div>\u4eca\u56de\u306fstaging\u3092\u5bfe\u8c61\u3068\u3057\u305f\u3044\u306e\u3067<strong>-n staging<\/strong>\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001production\u3092\u6307\u5b9a\u3059\u308c\u3070\u672c\u756a\u306eactivate\u3082\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<div>\n<div>\n<h2>\u904b\u7528\u306b\u3069\u3046\u4e57\u305b\u308b\u304b<\/h2>\n<div>\u4ee5\u4e0a\u3067\u4e00\u9023\u306e\u6d41\u308c\u3067\u3059\u304c\u305d\u3046\u96e3\u3057\u304f\u306a\u304f\u65e2\u5b58\u30d7\u30ed\u30d1\u30c6\u30a3\u306eexport\u304c\u3067\u304d\u307e\u3059\u3002<\/div>\n<div>\u65b0\u898f\u4f5c\u6210\u306b\u3064\u3044\u3066\u3082\u666e\u901a\u306b\u4f5c\u308c\u3070\u3044\u3044\u306e\u3067\u884c\u3051\u305d\u3046\u3067\u3059\u3002<\/div>\n<div>\u3068\u6700\u521d\u8003\u3048\u3066\u305f\u306e\u3067\u3059\u304c\u3001\u5b9f\u904b\u7528\u306b\u4e57\u305b\u308b\u305f\u3081\u306b\u306f\u96e3\u3057\u3044\u554f\u984c\u304c\u3042\u308a\u982d\u3092\u60a9\u307e\u305b\u308b\u3053\u3068\u3068\u306a\u308a\u307e\u3057\u305f\u3002<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div>\n<h1>Akamai\u7279\u6709\u306eterraform\u904b\u7528\u306e\u96e3\u3057\u3055<\/h1>\n<div>CDN\u306b\u9650\u3089\u305a\u3067\u3059\u304c\u4eca\u306f\u3069\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u3082Web\u4e0a\u304b\u3089\u8a2d\u5b9a\u3092\u5909\u66f4\u3067\u304d\u307e\u3059\u3002<\/div>\n<div>\u3068\u3053\u308d\u304cterraform\u5229\u7528\u6642\u306fCI\u30c4\u30fc\u30eb\u3068\u9023\u643a\u3055\u305b\u3066terraform\u5074\u306b\u5bc4\u305b\u3066\u3057\u307e\u3046\u3053\u3068\u304c\u4e00\u822c\u7684\u3067\u3059\u3002<\/div>\n<div>\u3053\u308c\u306fWeb\u5074\u3067\u5909\u66f4\u3059\u308b\u3068terraform\u5074\u306e\u8a2d\u5b9a\u3068\u5dee\u5206\u304c\u767a\u751f(drift)\u3059\u308b\u304b\u3089\u3067\u3059\u3002<\/div>\n<div>\u3067\u306fAkamai\u3082terraform\u306b\u5bc4\u305b\u3089\u308c\u308b\u304b\u3068\u3044\u3046\u3068\u5b9f\u904b\u7528\u4e0a\u3067\u306f\u307b\u307c\u4e0d\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<h2>\u8a2d\u5b9a\u9805\u76ee\u3068\u5909\u66f4\u304c\u591a\u3044<\/h2>\n<div>\u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u6761\u4ef6\u6587\u306b\u76f8\u5f53\u3059\u308b<a href=\"https:\/\/techdocs.akamai.com\/property-mgr\/reference\/latest-criteria\">Criteria<\/a>\u3068\u3001HTTP\/3\u3092\u6709\u52b9\u306b\u3059\u308b\u306a\u3069\u306e\u69d8\u3005\u306a\u6a5f\u80fd\u3092\u8a2d\u5b9a\u3059\u308b<a href=\"https:\/\/techdocs.akamai.com\/property-mgr\/reference\/latest-behaviors\">Behavior<\/a>\u306a\u3069\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u304d\u307e\u3059\u304c<\/div>\n<div>\u73fe\u6642\u70b9\u3067Criteria\u304c39\u3001Behavior\u304c214\u3042\u308a\u307e\u3059\u3002<\/div>\n<div>\u3082\u3061\u308d\u3093\u826f\u304f\u4f7f\u3046\u8a2d\u5b9a\u306f\u9650\u3089\u308c\u3066\u3044\u307e\u3059\u3057\u3001\u5951\u7d04\u306b\u3088\u3063\u3066\u4f7f\u3048\u306a\u3044\u306e\u3082\u591a\u6570\u3042\u308a\u307e\u3059\u304c\u3053\u308c\u3092\u899a\u3048\u3066\u884c\u3046\u306e\u306f\u7121\u7406\u3067\u3059\u3002<\/div>\n<div>\u307e\u305f\u5272\u3068\u983b\u7e41\u306b\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u304c\u884c\u308f\u308c\u3001behavior\u306e\u6570\u3082\u3067\u3059\u304c\u30aa\u30d7\u30b7\u30e7\u30f3\u9805\u76ee\u304c\u5897\u3048\u307e\u3059\u3002<\/div>\n<div>ACC\u3067\u8a2d\u5b9a\u3092Activate\u3059\u308b\u524d\u306b\u65b0\u65e7\u30d0\u30fc\u30b8\u30e7\u30f3\u6bd4\u8f03\u3092\u884c\u3046\u306e\u304c\u4e00\u822c\u7684\u3067\u3059\u304c\u3001\u5909\u66f4\u3057\u3066\u3044\u306a\u3044\u8a2d\u5b9a\u3067\u3082\u5dee\u5206\u304c\u51fa\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/div>\n<div>\u3053\u308c\u306f\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u304c\u884c\u308f\u308c\u305f\u3053\u3068\u304c\u539f\u56e0\u3067\u3059\u3002<\/div>\n<div>\n<div id=\"attachment_22995\" style=\"width: 840px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-22995\" class=\"wp-image-22995 size-large\" src=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image-830x103.png\" alt=\"\" width=\"830\" height=\"103\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image-830x103.png 830w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image-600x75.png 600w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image-276x34.png 276w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image-768x96.png 768w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image-1536x191.png 1536w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/image.png 1544w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><p id=\"caption-attachment-22995\" class=\"wp-caption-text\">\u5909\u66f4\u304c\u306a\u3044\u306e\u306b\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u3067\u5dee\u5206\u304c\u3067\u305fbehavior<\/p><\/div>\n<\/div>\n<div><\/div>\n<div>\u5897\u3048\u305f\u9805\u76ee\u306b\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u304c\u3042\u308b\uff08\u306f\u305a\uff09\u306e\u3067\u77e5\u3089\u306a\u304f\u3066\u3082\u554f\u984c\u304c\u306a\u3044\u3068\u3044\u3048\u3070\u306a\u3044\u306e\u3067\u3059\u304c\u3001<\/div>\n<div>\u5fc5\u305a\u4f7f\u3046\u3060\u308d\u3046<a href=\"https:\/\/techdocs.akamai.com\/property-mgr\/reference\/latest-origin\">Origin\u306e\u8a2d\u5b9a\u9805\u76ee<\/a>\u306e\u591a\u3055\u3092\u898b\u3066\u3082\u308f\u304b\u308b\u901a\u308a\u4eba\u529b\u3067\u66f8\u304f\u306e\u306f\u53b3\u3057\u304f\u3001ACC\u4e0a\u3067\u8a2d\u5b9a\u3092\u4f5c\u3063\u3066export\u3059\u308b\u304bJSON\u8868\u793a\u306e\u5185\u5bb9\u3092\u30b3\u30d4\u30da\u3059\u308b\u306e\u304c\u73fe\u5b9f\u7684\u3067\u3059\u3002<\/div>\n<\/div>\n<\/div>\n<div>\n<div id=\"attachment_23001\" style=\"width: 840px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-23001\" class=\"wp-image-23001 size-large\" src=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json-830x453.png\" alt=\"\" width=\"830\" height=\"453\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json-830x453.png 830w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json-600x327.png 600w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json-276x151.png 276w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json-768x419.png 768w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json-1536x838.png 1536w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rule-json.png 1808w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><p id=\"caption-attachment-23001\" class=\"wp-caption-text\">JSON\u3092\u8868\u793a\u3067terraform\u3067\u3082\u5229\u7528\u3067\u304d\u308bjson\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b<\/p><\/div>\n<\/div>\n<div>\n<div>\n<div>\u306a\u304a\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u56fa\u5b9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u304c\u3001\u65b0\u6a5f\u80fd\u3082\u4f7f\u3048\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/div>\n<div>\n<div id=\"attachment_22997\" style=\"width: 840px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rulefmt.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-22997\" class=\"wp-image-22997 size-large\" src=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rulefmt-830x427.png\" alt=\"\" width=\"830\" height=\"427\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rulefmt-830x427.png 830w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rulefmt-600x309.png 600w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rulefmt-276x142.png 276w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rulefmt-768x395.png 768w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-rulefmt.png 1233w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><p id=\"caption-attachment-22997\" class=\"wp-caption-text\">\u30d7\u30ed\u30d1\u30c6\u30a3\u4f5c\u6210\u6642\u306b\u3082\u30eb\u30fc\u30eb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a\u3067\u304d\u308b\u304c\u983b\u7e41\u306b\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u4e0a\u304c\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308b<\/p><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<h2>\u3059\u3079\u3066\u306e\u6a5f\u80fd\u3092Terraform\u3067\u5236\u5fa1\u3067\u304d\u306a\u3044<\/h2>\n<div>\n<div>Akamai\u3067\u30ed\u30b0\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f<a href=\"https:\/\/techdocs.akamai.com\/datastream2\/docs\/welcome-datastream2\">DataStream2<\/a>(DS2)\u3092\u5229\u7528\u3057\u307e\u3059\u3002(\u00a0Log Delivery Services\u306f\u7d42\u606f\u65b9\u5411)<\/div>\n<div>\n<div>\n<div>DS2\u5074\u306b\u306f\u30ed\u30b0\u3092\u51fa\u529b\u3059\u308b\u30d7\u30ed\u30d1\u30c6\u30a3\u540d\u3092\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u5074\u306b\u30ed\u30b0\u306e\u9001\u4fe1\u5148\u3068\u3057\u3066DS2\u540d\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067\u3059\u304c\u5c11\u3057\u5384\u4ecb\u3067\u5148\u306b\u30d7\u30ed\u30d1\u30c6\u30a3\u3092Activate\u3057\u306a\u3044\u3068DS2\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002<\/div>\n<\/div>\n<div>\n<ol>\n<li>\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f5c\u6210\u3057\u3066Activate\u3059\u308b(Staging\/Production\u306e\u3069\u3061\u3089\u3067\u3082OK)<\/li>\n<li>DS2\u5074\u306b\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8ffd\u52a0\u3057\u3066Activate<\/li>\n<li>\u30d7\u30ed\u30d1\u30c6\u30a3\u306bDS2\u306ebehavior\u3092\u8ffd\u52a0\u3057\u3066Activate<\/li>\n<\/ol>\n<div>\u3053\u306e\u3088\u3046\u306b\u8907\u96d1\u306a\u624b\u9806\u304c\u5fc5\u8981\u306a\u3082\u306e\u304c\u3042\u3063\u305f\u308a\u3001\u4ed6\u306b\u3082terraform\u3067\u4f5c\u308c\u306a\u3044\u30ea\u30bd\u30fc\u30b9\u3092behavior\u304b\u3089\u53c2\u7167\u3059\u308b\u3082\u306e\u304c\u3042\u3063\u305f\u308a\u3068\u5168\u3066terraform\u7ba1\u7406\u4e0b\u306b\u7f6e\u304f\u306e\u306f\u7121\u7406\u3067\u3057\u3087\u3046\u3002<\/div>\n<div>\u3068\u3044\u3046\u3053\u3068\u3067ACC\u306e\u5229\u7528\u304c\u5fc5\u9808\u306a\u306e\u3067\u3001terraform\u3092\u4fbf\u5229\u306b\u4f7f\u3044\u3064\u3064\u3069\u306e\u3088\u3046\u306b\u6574\u5408\u6027\u3092\u3068\u3063\u3066\u3044\u304f\u304b\u3092\u8003\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/div>\n<div>\n<h1>ACC\u3068terraform\u306e\u3069\u3061\u3089\u3082\u4f7f\u3046<\/h1>\n<div>\u4e21\u65b9\u4f7f\u3046\u5834\u5408\u306fdrift\u3092\u3069\u3046\u6271\u3046\u304b\u304c\u554f\u984c\u3067\u3059\u3002<\/div>\n<div>\u4eca\u56de\u5b9f\u73fe\u3057\u305f\u3044\u306e\u306fAkamai\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u4f5c\u6210\u3084\u66f4\u65b0\u3092terraform\u3067\u904b\u7528\u3057\u305f\u3044\u3068\u3044\u3046\u3082\u306e\u3067\u3057\u305f\u3002<\/div>\n<div>\u7279\u306b\u8907\u6570\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u3092\u4f7f\u3046\u3053\u3068\u3082\u306a\u3044\u306e\u3067\u6700\u60aa\u6bce\u56deexport\u3057\u3066\u3082\u554f\u984c\u306a\u3044\u3068\u767a\u60f3\u3092\u5909\u3048\u307e\u3057\u305f\u3002<\/div>\n<div>\u8981\u306f\u8a2d\u5b9a\u306e\u30de\u30b9\u30bf\u306fAkamai\u306a\u306e\u3067\u305d\u3053\u3068\u306e\u540c\u671f\u3092\u78ba\u5b9f\u306b\u884c\u3044\u3001terraform\u5074\u3067\u306fstate\u3092\u6301\u305f\u306a\u3044\u3068\u3044\u3046\u65b9\u91dd\u3067\u30d5\u30ed\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<\/div>\n<div>\u3053\u308c\u3089\u306e\u30d5\u30ed\u30fc\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3044\u304f\u3064\u304b\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u306e\u3067\u307e\u305a\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/div>\n<\/div>\n<h2>akamai-tf-tools<\/h2>\n<p><a href=\"https:\/\/github.com\/xcir\/akamai-tf-tools\">https:\/\/github.com\/xcir\/akamai-tf-tools<\/a><\/p>\n<div>\n<h3>akamai-docker.sh<\/h3>\n<div>akamai\/shell\u306e\u8d77\u52d5\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3059\u3002<\/div>\n<div>\u4ee5\u4e0b\u306e\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059<\/div>\n<ul>\n<li>\u73fe\u5728\u306e\u30d1\u30b9\u3092\/workdir\/mount\u306b\u30de\u30a6\u30f3\u30c8<\/li>\n<li>\u629c\u3051\u308b\u969b\u306b\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u683c\u7d0d\u5148(\/props)\u3068\u30ef\u30fc\u30af\u30c7\u30a3\u30ec\u30af\u30c8\u30ea(\/work)\u3092\u5b9f\u884c\u30e6\u30fc\u30b6\u3067chown<\/li>\n<\/ul>\n<div>\u5b9f\u884c\u30e6\u30fc\u30b6\u30fc\u3067\u52d5\u304b\u305d\u3046\u3068\u3044\u308d\u3044\u308d\u8a66\u3057\u305f\u306e\u3067\u3059\u304c\u3001akamai\/shell\u5185\u3067root\u3067\u306a\u3044\u3068\u4e00\u90e8\u30b3\u30de\u30f3\u30c9\u304c\u52d5\u304b\u306a\u304f\u306a\u308b\u3053\u3068\u304b\u3089\u3084\u3080\u3092\u5f97\u305a\u3053\u306e\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/div>\n<div>.edgerc\u306f$HOME\/.edgerc\u3092\u57fa\u672c\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001$AKHOME\u3092\u8a2d\u5b9a\u3059\u308b\u3068\u4ed6\u306e\u30d1\u30b9\u3092\u4f7f\u3046\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<div>\n<pre class=\"lang:sh decode:true\">AKHOME=\/home\/foo .\/akamai-docker.sh<\/pre>\n<div>\n<h3>get_property.sh [property name] [property ver(option)]<\/h3>\n<div>akamai\/shell\u5185\u3067\u306e\u307f\u5b9f\u884c\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<div>\u6307\u5b9a\u3057\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/div>\n<div>\u4fdd\u5b58\u5148\u306f<strong>props\/ctr_[<em>contractID<\/em>]\/[<em>property name<\/em>]<\/strong>\u3068\u306a\u308a\u307e\u3059<\/div>\n<div>\n<h3>get_all_property.py<\/h3>\n<div>akamai\/shell\u5185\u3067\u306e\u307f\u5b9f\u884c\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<div>\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u3059\u3079\u3066\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u5b9f\u884c\u306b\u306f\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002<\/div>\n<div>\u4fdd\u5b58\u5148\u306f<strong>props\/ctr_[<em>contractID<\/em>]\/[<em>property name<\/em>]<\/strong>\u3068\u306a\u308a\u307e\u3059<\/div>\n<\/div>\n<div>\n<h3>maintenance.py<\/h3>\n<div>akamai\/shell\u5185\u3067\u306e\u307f\u5b9f\u884c\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<div>\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u53d6\u5f97\u30fb\u66f4\u65b0\u30fb\u524a\u9664\u3068\u3044\u3063\u305f\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3092\u884c\u3044\u307e\u3059\u3002<\/div>\n<div>\u904b\u7528\u306f\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3046\u3060\u3051\u3067\u4e8b\u8db3\u308a\u308b\u306f\u305a\u3067\u3059\u3002<\/div>\n<div>\u30aa\u30d7\u30b7\u30e7\u30f3\u306f<\/div>\n<ul>\n<li>-f tfstate\u304c\u3042\u308b\u30d1\u30b9\u3092\u524a\u9664\u3059\u308b<\/li>\n<li>-x \u5b9f\u884c\u304c\u5fc5\u8981\u306a\u30b3\u30de\u30f3\u30c9\u3092\u30b5\u30b8\u30a7\u30b9\u30c8\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u5b9f\u884c\u3059\u308b<\/li>\n<\/ul>\n<div>\u3068\u306a\u3063\u3066\u304a\u308a\u3001\u57fa\u672c\u7684\u306b\u306f\u5e38\u306b<strong>-f -x<\/strong>\u3092\u540c\u6642\u306b\u6307\u5b9a\u3057\u3066\u52d5\u304b\u3057\u307e\u3059\u3002<\/div>\n<div>\u306a\u304a\u66f4\u65b0\u306b\u3064\u3044\u3066\u306f\u30d7\u30ed\u30d1\u30c6\u30a3\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u898b\u3066\u3044\u307e\u3059\u3002<\/div>\n<div>\u305d\u306e\u305f\u3081\u3053\u306e\u3088\u3046\u306a\u30b1\u30fc\u30b9\u306b\u306f\u5bfe\u5fdc\u3067\u304d\u307e\u305b\u3093\u3002<\/div>\n<ol>\n<li>maintenance.py\u3067\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30c8\u3092\u884c\u3063\u3066\u3044\u306a\u3044\u8a2d\u5b9a\u3092\u53d6\u5f97(\u30d7\u30ed\u30d1\u30c6\u30a3V2)<\/li>\n<li>ACC\u4e0a\u3067\u8a2d\u5b9a\u7de8\u96c6(V2)<\/li>\n<li>\u518d\u5ea6maintenance.py\u3092\u5b9f\u884c\u3059\u308b\u304c\u540c\u4e00\u30d0\u30fc\u30b8\u30e7\u30f3(V2)\u306e\u305f\u3081\u66f4\u65b0\u304c\u53cd\u6620\u3055\u308c\u306a\u3044<\/li>\n<\/ol>\n<div>\u3053\u306e\u5834\u5408\u306f\u8a72\u5f53\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u524a\u9664\u3059\u308c\u3070\u518d\u53d6\u5f97\u3057\u307e\u3059\u3002<\/div>\n<div>\u7de8\u96c6\u524d\u306b<strong>terraform plan<\/strong>\u3092\u5b9f\u884c\u3057\u3066\u5dee\u5206\u304c\u3067\u305f\u3089\u6d88\u3059\u3068\u899a\u3048\u3066\u304a\u3051\u3070\u3044\u3044\u3067\u3059\u3002<\/div>\n<div>\u307e\u305f\u3001\u521d\u56de\u5b9f\u884c\u6642\u306f\u5185\u90e8\u3067get_all_property.py\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002<\/div>\n<\/div>\n<div>\n<h3>\u4f7f\u3063\u3066\u307f\u308b<\/h3>\n<div>\u3072\u3068\u307e\u305a\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u5168\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u53d6\u5f97\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/div>\n<div>\n<pre class=\"lang:sh decode:true\">$ .\/akamai-docker.sh \n                ___    __                         _            \n               \/   |  \/ \/______ _____ ___  ____ _(_)           \n              \/ \/| | \/ \/\/_\/ __ `\/ __ `__ \\\/ __ `\/ \/            \n             \/ ___ |\/ ,&lt; \/ \/_\/ \/ \/ \/ \/ \/ \/ \/_\/ \/ \/             \n            \/_\/  |_\/_\/|_|\\__,_\/_\/ \/_\/ \/_\/\\__,_\/_\/              \n===============================================================\n=  Welcome to the Akamai Docker Image                         =\n===============================================================\n=  Project page:                                              =\n=  https:\/\/github.com\/akamai\/akamai-docker                    =\n===============================================================\nAkamai DevOps [\/workdir] &gt;&gt; cd mount\/\nAkamai DevOps [\/workdir\/mount] &gt;&gt; .\/maintenance.py -f -x\n### NO PROPS. Need to run .\/get_all_property.py\n>&gt;&gt;contract: ctr_XXXXX group: grp_XXXX property: XXXX version( stg: 5 prod: 5 latest: 5 get: 5 )\nFetching property XXXX [OK]\nFetching group  [OK]\nFetching property version  [OK]\nFetching property rules  [OK]\nFetching product name  [OK]\nFetching hostnames  [OK]\nFetching activation details  [OK]\nSaving TF configurations  [OK]\nTerraform configuration for property 'XXXX' was saved successfully\n---------------------------------------------\nContractID | ctr_XXXX\n  Property | XXXX\n---------------------------------------------\n...\n---------------------------------------------\nContractID | ctr_YYYY\n  Property | YYYY\n---------------------------------------------\nAkamai DevOps [\/workdir\/mount] &gt;&gt; ls props\/*|head\nprops\/ctr_XXXXX:\nXXXX\nYYYY\n...\nAkamai DevOps [\/workdir\/mount] &gt;&gt; \nexit\nchown -R \/props \/work\n[sudo] password for xcir: ****<\/pre>\n<div>\n<div>\u3053\u308c\u3060\u3051\u3067\u3059\u3002<\/div>\n<div>export\u3057\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u3059\u3079\u3066props\/\u4ee5\u4e0b\u306b\u3042\u308a\u307e\u3059\u3002<\/div>\n<div>ACC\u3067\u5909\u66f4\u3057\u3088\u3046\u304cterraform\u3067\u5909\u66f4\u3057\u3088\u3046\u304cmaintenance.py\u3067\u7dba\u9e97\u306a\u72b6\u614b\u306b\u306a\u308b\u306e\u3067drift\u3092\u610f\u8b58\u3057\u306a\u304f\u3066\u3082\u826f\u304f\u306a\u308a\u307e\u3059\u3002<\/div>\n<div>\u306a\u304a\u30c6\u30b9\u30c8\u30c4\u30fc\u30eb\u3082\u3042\u308b\u306e\u3067\u3059\u304c\u3001\u305d\u308c\u306f\u5225\u8a18\u4e8b\u3067\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/div>\n<div>\n<h2>\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u65b0\u898f\u4f5c\u6210<\/h2>\n<ol>\n<li>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092work\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u3066\u7de8\u96c6<\/li>\n<li>terraform init~apply<\/li>\n<li>activate(stg)<\/li>\n<li>DS2\u8a2d\u5b9a\n<ol>\n<li>DS2\u306b\u65b0\u898f\u4f5c\u6210\u3057\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8ffd\u52a0<\/li>\n<li>\u30d7\u30ed\u30d1\u30c6\u30a3\u306bDS2\u8a2d\u5b9a\u3092\u8ffd\u52a0<\/li>\n<li>terraform apply<\/li>\n<\/ol>\n<\/li>\n<li>\u518dactivate(stg)<\/li>\n<li>\u305d\u306e\u307b\u304b\u5fc5\u8981\u306a\u30ea\u30bd\u30fc\u30b9\u306e\u4f5c\u6210\n<ol>\n<li>createRPT.py<\/li>\n<li>createLDS.py<\/li>\n<\/ol>\n<\/li>\n<li>maintenance.py -f -x<\/li>\n<li>\u30c6\u30b9\u30c8<\/li>\n<li>git add ~ push<\/li>\n<li>activate(prod)<\/li>\n<\/ol>\n<div>\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u65b0\u898f\u306b\u4f5c\u6210\u3059\u308b\u969b\u306b\u306f\u5f8c\u307b\u3069\u89e6\u308c\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30d9\u30fc\u30b9\u306b\u4f5c\u3063\u3066\u3044\u304d\u307e\u3059\u3002<\/div>\n<div>\u624b\u9806\u304c\u7169\u96d1\u306a\u306e\u306f\u5148\u306b\u89e6\u308c\u305factivate\u3057\u306a\u3044\u3068\u8a2d\u5b9a\u8ffd\u52a0\u304c\u3067\u304d\u306a\u3044DS2\u304c\u3042\u308b\u305f\u3081\u3067\u3001\u305d\u308c\u3092\u9664\u304f\u3068\u307b\u307c\u6d41\u308c\u4f5c\u696d\u3067\u3059\u3002<\/div>\n<div>\u307e\u305f\u4eca\u56de\u516c\u958b\u3057\u3066\u3044\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u306f\u306a\u3044\u3067\u3059\u304c\u3001createRPT\/LDS\u306f\u30ec\u30dd\u30fc\u30c6\u30a3\u30f3\u30b0\u30b0\u30eb\u30fc\u30d7\u3068Log Delivery Services(LDS)\u306e\u4f5c\u6210\u3092\u884c\u3046\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3059\u3002<\/div>\n<div>\u6050\u3089\u304f\u904b\u7528\u3092\u3059\u308b\u969b\u306b\u306f\u5404\u793e\u3067\u305d\u308c\u305e\u308c\u5fc5\u8981\u306a\u8a2d\u5b9a\u304c\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u306e\u3067\u3001api\u3084cli\u3092\u99c6\u4f7f\u3057\u3066\u3067\u304d\u308b\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u3063\u3066\u304a\u304f\u3068\u4fbf\u5229\u3067\u3059\u3002<\/div>\n<div>\n<h2>\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u66f4\u65b0<\/h2>\n<ol>\n<li>maintenance.py -f -x\n<ol>\n<li>\u4e0a\u8a18\u3067\u5909\u66f4\u304c\u3042\u3063\u305f\u5834\u5408\u306f\u4e00\u5ea6git add ~ commit<\/li>\n<\/ol>\n<\/li>\n<li>import.sh<\/li>\n<li>terraform plan\n<ol>\n<li>\u3053\u3053\u3067\u5dee\u5206\u304c\u51fa\u308b\u5834\u5408\u306f\u540c\u4e00\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u5909\u66f4\u304c\u3042\u3063\u305f\u30b1\u30fc\u30b9\u306a\u306e\u3067\u8a72\u5f53\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a9\u30eb\u30c0\u3092\u524a\u9664<\/li>\n<li>maintenance.py -f -x<\/li>\n<li>import.sh<\/li>\n<\/ol>\n<\/li>\n<li>\u8a2d\u5b9a\u7de8\u96c6<\/li>\n<li>terraform plan ~ apply<\/li>\n<li>activate(stg)<\/li>\n<li>\u30c6\u30b9\u30c8<\/li>\n<li>maintenance.py -f -x<\/li>\n<li>git add ~ push<\/li>\n<li>activate(prod)<\/li>\n<\/ol>\n<div>maintnance.py\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u3067ACC\u4e0a\u3067\u7de8\u96c6\u3057\u3066\u3044\u3066\u3082export\u3067\u304d\u308b\u306e\u3067drift\u3092\u6c17\u306b\u305b\u305a\u7de8\u96c6\u304c\u53ef\u80fd\u3067\u3059\u3002<\/div>\n<\/div>\n<h1>\u65b0\u898f\u30d7\u30ed\u30d1\u30c6\u30a3\u7528\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/h1>\n<p>\u4eca\u56de\u30b5\u30f3\u30d7\u30eb\u3068\u3057\u3066\u63d0\u4f9b\u3057\u3066\u3044\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f<a href=\"https:\/\/github.com\/akamai\/examples-terraform\">\u516c\u5f0f<\/a>\u3092\u6539\u9020\u3057\u305f\u3082\u306e\u3067\u3059\u3002<br \/>\n\u6d41\u77f3\u306b\u793e\u5185\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u305d\u306e\u307e\u307e\u51fa\u305b\u306a\u3044\u306e\u3067\u3060\u3044\u3076\u6a5f\u80fd\u306f\u524a\u3063\u3066\u3044\u307e\u3059\u304c\u4e00\u901a\u308a\u306e\u3053\u3068\u3068\u62e1\u5f35\u306e\u3057\u3084\u3059\u3055\u306f\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u306e\u3067\u662f\u975e\u6539\u9020\u3057\u3066\u4f7f\u3063\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n\u307e\u305a\u30b5\u30f3\u30d7\u30eb\u3092\u4f7f\u3046\u524d\u306b\u6700\u4f4e\u9650\u7de8\u96c6\u304c\u5fc5\u8981\u306a\u90e8\u5206\u304c\u3042\u308a\u307e\u3059\u306e\u3067\u305d\u308c\u3092\u7d39\u4ecb\u3057\u305f\u4e0a\u3067\u3069\u306e\u3088\u3046\u306b\u4f7f\u3046\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n<div>\n<h2>akamai.auto.tfvars<\/h2>\n<div>\n<pre class=\"lang:default decode:true\"># variable edgerc_config_section to define which config_section to use inside the edgerc file.\nedgerc_config_section = \"default\" # Recommended value: default\n\n# variable contract_id reflects your Akamai Contract ID.\ncontract_id = \"\u30b3\u30f3\u30c8\u30e9\u30af\u30c8ID(ctr_XXXX)\"\n\n# variable group_name reflects the name of your group you want to store your config. Groups are part of an Akamai contract.\ngroup_id = \"\u30b0\u30eb\u30fc\u30d7ID(grp_XXXX)\"<\/pre>\n<p>\u30b3\u30f3\u30c8\u30e9\u30af\u30c8ID\u3068\u30b0\u30eb\u30fc\u30d7ID\u306e\u6307\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<p>akama-cli\u3067pm lg\u3092\u5b9f\u884c\u3059\u308b\u3068\u73fe\u5728\u306e\u4e00\u89a7\u304c\u898b\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"lang:sh decode:true\">Akamai DevOps [\/workdir\/mount] &gt;&gt; akamai pm lg -s default\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502\"Group Name\"               \u2502\"Group ID\"  \u2502\"Parent Group ID\"\u2502\"Contract IDs\" \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502\"foo\"                      \u2502\"grp_XXXXX\" \u2502\"\"               \u2502\"ctr_X-XXXXX\"  \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n...\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502\"bar\"                      \u2502\"grp_YYYYY\" \u2502\"grp_XXXXX\"      \u2502\"ctr_X-XXXXX\"  \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/pre>\n<h2>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u5229\u7528\u3057\u3066\u65b0\u898f\u306b\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f5c\u6210\u3059\u308b<\/h2>\n<\/div>\n<\/div>\n<pre class=\"lang:sh decode:true\">$ cp -rp sample-template\/ work\/test<\/pre>\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092work\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30b3\u30d4\u30fc\u3057\u3066modules.tf\u3092\u7de8\u96c6\u3057\u307e\u3059<\/p>\n<pre class=\"lang:sh decode:true\" title=\"modules.tf\"># modules.tf\n# version 1.0.0\n# This Terraform configuration functions as the configuration to create Akamai modules which acts as logical groupings of Akamai functionality.\n\nmodule \"akamai-property\" {\n    source = \".\/akamai-property\"\n\n    edgerc_config_section = var.edgerc_config_section\n\n    contract_id = var.contract_id\n    group_id    = var.group_id\n\n    # \u8a2d\u5b9a\u304c\u5fc5\u8981\u306a\u3082\u306e\n    hostname        = \"\u30db\u30b9\u30c8\u540d\u3092\u8a2d\u5b9a\u3059\u308b\"                          # akamai\u3067\u53d7\u3051\u4ed8\u3051\u305f\u3044\u30db\u30b9\u30c8\u540d\n    edge_hostname   = \"\u30a8\u30c3\u30b8\u30db\u30b9\u30c8\u540d\u3092\u8a2d\u5b9a\u3059\u308b\"                     # \u65e2\u5b58\u3067\u3082\u65b0\u898f\u3067\u3082\n    origin_hostname = \"\u30aa\u30ea\u30b8\u30f3\u30db\u30b9\u30c8\u540d\"                            # example.net\u306a\u3069\n    cpcode_name     = \"CP\u30b3\u30fc\u30c9\u306e\u540d\u524d\u3092\u8a2d\u5b9a\"                        # \u57fa\u672c\u7684\u306b\u30db\u30b9\u30c8\u540d\u3068\u540c\u4e00\n    default_ttl     = \"\u30c7\u30d5\u30a9\u30eb\u30c8\u306eTTL\u8a2d\u5b9a\"                         # smhd(\u79d2\u5206\u6642\u65e5) 30d=30\u65e5\n\n    # \u4f55\u304b\u3042\u308c\u3070\u5909\u66f4\u3059\u308b\u3082\u306e\n    product_id      = \"prd_Download_Delivery\"   # prd_Download_Delivery, prd_Dynamic_Site_Del\n    ip_behavior     = \"IPV4\"                    # IPV4(v4only) , IPV6_COMPLIANCE(v4\/v6 dualstack)\n    rule_format     = \"latest\"                  # latest, v2023-05-30\n\n    cert_provisioning_type  = \"CPS_MANAGED\" \n}<\/pre>\n<p>\u30b3\u30e1\u30f3\u30c8\u306e\u901a\u308a\u306a\u306e\u3067\u305d\u3053\u307e\u3067\u60a9\u3080\u3053\u3068\u306f\u306a\u3044\u3068\u601d\u3044\u307e\u3059\u304c\u3001cdn.example.net\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f5c\u308b\u3068\u3057\u305f\u3089\u3053\u3093\u306a\u5f62\u3067\u3057\u3087\u3046\u304b<br \/>\n\u306a\u304a\u3001\u30d7\u30ed\u30c0\u30af\u30c8\u306fDownloadDelivery\u306b\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"lang:sh decode:true\"># modules.tf\n# version 1.0.0\n# This Terraform configuration functions as the configuration to create Akamai modules which acts as logical groupings of Akamai functionality.\n\nmodule \"akamai-property\" {\n    source = \".\/akamai-property\"\n\n    edgerc_config_section = var.edgerc_config_section\n\n    contract_id = var.contract_id\n    group_id    = var.group_id\n\n    # \u8a2d\u5b9a\u304c\u5fc5\u8981\u306a\u3082\u306e\n    hostname        = \"cdn.example.net\"                        # akamai\u3067\u53d7\u3051\u4ed8\u3051\u305f\u3044\u30db\u30b9\u30c8\u540d\n    edge_hostname   = \"cdn-example-net.akamaized.net\"          # \u65e2\u5b58\u3067\u3082\u65b0\u898f\u3067\u3082\n    origin_hostname = \"example.net\"                            # example.net\u306a\u3069\n    cpcode_name     = \"cdn.example.net\"                        # \u57fa\u672c\u7684\u306b\u30db\u30b9\u30c8\u540d\u3068\u540c\u4e00\n    default_ttl     = \"1d\"                                     # smhd(\u79d2\u5206\u6642\u65e5) 30d=30\u65e5\n\n    # \u4f55\u304b\u3042\u308c\u3070\u5909\u66f4\u3059\u308b\u3082\u306e\n    product_id      = \"prd_Download_Delivery\"   # prd_Download_Delivery, prd_Dynamic_Site_Del\n    ip_behavior     = \"IPV4\"                    # IPV4(v4only) , IPV6_COMPLIANCE(v4\/v6 dualstack)\n    rule_format     = \"latest\"                  # latest, v2023-05-30\n\n    cert_provisioning_type  = \"CPS_MANAGED\" \n}<\/pre>\n<p>\u3072\u3068\u307e\u305a\u3053\u308c\u3067\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:sh decode:true\">$ .\/akamai-docker.sh \n                ___    __                         _            \n               \/   |  \/ \/______ _____ ___  ____ _(_)           \n              \/ \/| | \/ \/\/_\/ __ `\/ __ `__ \\\/ __ `\/ \/            \n             \/ ___ |\/ ,&lt; \/ \/_\/ \/ \/ \/ \/ \/ \/ \/_\/ \/ \/             \n            \/_\/  |_\/_\/|_|\\__,_\/_\/ \/_\/ \/_\/\\__,_\/_\/              \n===============================================================\n=  Welcome to the Akamai Docker Image                         =\n===============================================================\n=  Project page:                                              =\n=  https:\/\/github.com\/akamai\/akamai-docker                    =\n===============================================================\nAkamai DevOps [\/workdir] &gt;&gt; cd mount\/work\/test\/\nAkamai DevOps [\/workdir\/mount\/work\/test] &gt;&gt; terraform init\n\nInitializing the backend...\nInitializing modules...\n- akamai-property in akamai-property\n\nInitializing provider plugins...\n- Finding latest version of akamai\/akamai...\n- Installing akamai\/akamai v5.6.0...\n- Installed akamai\/akamai v5.6.0 (signed by a HashiCorp partner, key ID A26ECDD8F0BCBA73)\n\nPartner and community providers are signed by their developers.\nIf you'd like to know more about provider signing, you can read about it here:\n\t\t\t<div class=\"blog-card\">\n\t\t\t\t<div class=\"blog-card-body-outer\">\n\t\t\t\t\t<div class=\"blog-card-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h5 class=\"blog-card-title\">\n\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.terraform.io\/docs\/cli\/plugins\/signing.html\">Plugin signatures | Terraform | HashiCorp Developer<\/a>\n\t\t\t\t\t\t\t<\/h5>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"blog-card-text\">\n\t\t\t\t\t\t\t\tSignatures help you determine the authenticity of the plugins you want to install. Learn about the types of signatures providers can have on the Terraform regi\u2026\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"blog-card-site-title\">\n\t\t\t\t\t\t\t<a href=\"http:\/\/www.terraform.io\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" loading=\"lazy\" src=\"\/favicon.ico\" width=\"16\" height=\"16\" alt=\"\" >\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tPlugin signatures | Terraform | HashiCorp Developer\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"blog-card-image-outer\">\n\t\t\t\t\t\t<a href=\"https:\/\/www.terraform.io\/docs\/cli\/plugins\/signing.html\" class=\"blog-card-image-frame\">\n\t\t\t\t\t\t\t<img decoding=\"async\" class=\"blog-card-image-src\" src=\"https:\/\/developer.hashicorp.com\/og-image\/terraform.jpg\" alt=\"\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\n\nTerraform has created a lock file .terraform.lock.hcl to record the provider\nselections it made above. Include this file in your version control repository\nso that Terraform can guarantee to make the same selections by default when\nyou run \"terraform init\" in the future.\n\nTerraform has been successfully initialized!\n\nYou may now begin working with Terraform. Try running \"terraform plan\" to see\nany changes that are required for your infrastructure. All Terraform commands\nshould now work.\n\nIf you ever set or change modules or backend configuration for Terraform,\nrerun this command to reinitialize your working directory. If you forget, other\ncommands will detect it and remind you to do so if necessary.\nAkamai DevOps [\/workdir\/mount\/work\/test] &gt;&gt; \nAkamai DevOps [\/workdir\/mount\/work\/test] &gt;&gt; terraform apply\n\nTerraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:\n  + create\n &lt;= read (data resources)\n...\nApply complete! Resources: 3 added, 0 changed, 0 destroyed.\nAkamai DevOps [\/workdir\/mount\/work\/test] &gt;&gt;<\/pre>\n<p>\u3053\u308c\u3067\u4f5c\u6210\u3067\u304d\u305f\u306e\u3067\u3072\u3068\u307e\u305aACC\u4e0a\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046<\/p>\n<p><a href=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-23003\" src=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl-830x456.png\" alt=\"\" width=\"830\" height=\"456\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl-830x456.png 830w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl-600x329.png 600w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl-276x151.png 276w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl-768x422.png 768w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl-1536x843.png 1536w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl.png 1554w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><\/p>\n<p>\u7121\u4e8b\u8a2d\u5b9a\u304c\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<br \/>\n\u305d\u306e\u307e\u307eactivate\u3057\u3066\u3082\u3044\u3044\u306e\u3067\u3059\u304c\u3001\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br \/>\nakamai-property\/property-snippets\/main.json\u3092\u4fee\u6b63\u3057\u3066rules\/Enable_H2_H3.json\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\" title=\"akamai-property\/property-snippets\/main.json\">{\n    \"ruleFormat\": \"latest\",\n    \"rules\": {\n        \"name\": \"default\",\n        \"behaviors\": \"#include:behavior-default.json\",\n        \"children\": [\n            \"#include:rules\/Compressible_objects.json\",\n            \"#include:rules\/Enable_H2_H3.json\"\n        ],\n        \"options\": {}\n    }\n}<\/pre>\n<\/div>\n<p>\u518d\u5ea6terraform\u3067\u9069\u7528\u3057\u307e\u3059\u3002<br \/>\n\u306a\u304aterraform\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u304c\u306a\u3044\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u51fa\u305f\u5834\u5408\u306f\u518d\u5ea6init\u3057\u3066apply\u3059\u308c\u3070\u3044\u3051\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-23005\" src=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-830x640.png\" alt=\"\" width=\"830\" height=\"640\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-830x640.png 830w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-519x400.png 519w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-259x200.png 259w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2-768x592.png 768w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl2.png 1308w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><\/p>\n<p>\u3055\u304d\u307b\u3069\u304b\u3089Enable H2\/H3\u304c\u5897\u3048\u3066\u3044\u307e\u3059\u3002<br \/>\n\u3053\u306e\u5f8c\u306fmaintenance.py -f -x\u3092\u5b9f\u884c\u3059\u308c\u3070props\u4ee5\u4e0b\u306b\u4eca\u4f5c\u6210\u3057\u305f\u8a2d\u5b9a\u304cexport\u3055\u308c\u307e\u3059\u3002<\/p>\n<h2>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30ab\u30b9\u30bf\u30e0<\/h2>\n<p>\u5148\u307b\u3069\u6a5f\u80fd\u3092\u524a\u3063\u305f\u3068\u66f8\u304d\u307e\u3057\u305f\u304c\u3001\u524a\u3063\u305f\u306e\u306fEnable_H2_H3.json\u306e\u3088\u3046\u306a\u5b50\u30eb\u30fc\u30eb\u3067\u3059\u3002<br \/>\n\u4ed6\u306b\u3082POST\u30ad\u30e3\u30c3\u30b7\u30e5\u3084DS2\u3064\u306a\u304e\u3053\u307f\u306a\u3069\u306e\u69d8\u3005\u306a\u30eb\u30fc\u30eb\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u3053\u3053\u306f\u5404\u3005\u3067\u5897\u3084\u3057\u3066\u3044\u3051\u3070\u3088\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n<p>\u5897\u3084\u3057\u65b9\u3082\u7c21\u5358\u3067\u3059\u3002\u9069\u5f53\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u30eb\u30fc\u30eb\u3092\u4f5c\u6210\u3057\u3066JSON\u3092\u8868\u793a\u3059\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n<div id=\"attachment_23006\" style=\"width: 840px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl3.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-23006\" class=\"wp-image-23006 size-large\" src=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl3-830x531.png\" alt=\"\" width=\"830\" height=\"531\" srcset=\"https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl3-830x531.png 830w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl3-600x384.png 600w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl3-276x177.png 276w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl3-768x492.png 768w, https:\/\/labs.gree.jp\/blog\/wp-content\/uploads\/2024\/02\/akamai-tpl3.png 1042w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/a><p id=\"caption-attachment-23006\" class=\"wp-caption-text\">Enable_H2_H3.json\u3068Apply\u3057\u305f\u5f8c\u306eJSON\u3092\u8868\u793a\u306e\u7d50\u679c\u306f\u540c\u3058<\/p><\/div>\n<p>\u3053\u308c\u3092rules\u4ee5\u4e0b\u306b\u914d\u7f6e\u3057\u305f\u4e0a\u3067#include:rules\/template.json\u3068\u3059\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n<p>\u307e\u305f\u3053\u3053\u3067\u4f5c\u6210\u3057\u305f\u30eb\u30fc\u30eb\u306f\u3082\u3061\u308d\u3093\u65e2\u5b58\u306e\u8a2d\u5b9a\u306b\u3082\u9069\u7528\u3067\u304d\u307e\u3059\u3002<br \/>\nexport\u3057\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u306fprops\u4ee5\u4e0b\u306b\u3042\u308b\u306e\u3067<\/p>\n<p>props\/ctr_[contractID]\/[propertyname]\/property-snippets\/<\/p>\n<p>\u306b\u5229\u7528\u3057\u305f\u3044\u30eb\u30fc\u30ebjson\u3092\u30b3\u30d4\u30fc\u3057\u3066\u540c\u3058\u3088\u3046\u306b#include\u3059\u308c\u3070\u5229\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u307e\u305f\u3059\u3079\u3066\u306e\u8a2d\u5b9a\u3092\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u5b9f\u73fe\u3059\u308b\u5fc5\u8981\u306f\u306a\u304f\u3001\u4ed6\u3067\u4f7f\u3044\u3065\u3089\u3044\u3082\u306e\u3084\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u5316\u3057\u3065\u3089\u3044\u3082\u306e\u306fACC\u4e0a\u3067\u7de8\u96c6\u3057\u3066\u3057\u307e\u3048\u3070\u3088\u3044\u3067\u3059\u3002<br \/>\n\u305d\u306e\u8fba\u306e\u5272\u308a\u5207\u308a\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n<h1>\u6700\u5f8c\u306b<\/h1>\n<p>\u5358\u7d14\u306bAkamai\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092export\u3057\u3066\u7de8\u96c6\u3057\u3066terraform\u3067apply\u3059\u308b\u3060\u3051\u306a\u3089\u7c21\u5358\u306a\u306e\u3067\u3059\u304c\u3001<br \/>\n\u3044\u3056\u5b9f\u969b\u306e\u904b\u7528\u306b\u4e57\u305b\u3088\u3046\u3068\u8003\u3048\u308b\u3068ACC\u3092\u3069\u3046\u6271\u3046\u304b\u3068\u3044\u3046\u554f\u984c\u306b\u3076\u3061\u5f53\u305f\u308a\u307e\u3059\u3002<br \/>\n\u4eca\u56de\u7d39\u4ecb\u3057\u305f\u30d5\u30ed\u30fc\u3067\u306fterraform\u3067\u64cd\u4f5c\u3057\u305f\u5f8c\u306f\u6d88\u3059\u3053\u3068\u3067ACC\/terraform\u306e\u3069\u3061\u3089\u3067\u3082\u64cd\u4f5c\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u89e3\u6c7a\u3057\u307e\u3057\u305f\u3002<br \/>\n\u3053\u306e\u30d5\u30ed\u30fc\u306f\u307e\u3060\u9014\u4e0a\u3067\u6539\u5584\u304c\u5fc5\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3082\u3042\u308b\u306e\u3067\u3059\u304c\u3072\u3068\u307e\u305a\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u306f\u6709\u7528\u3060\u3068\u304a\u3082\u3044\u307e\u3059\u306e\u3067\u8a66\u3057\u3066\u3082\u3089\u3048\u308c\u3070\u5e78\u3044\u3067\u3059\u3002<br \/>\n\u307e\u305f\u30c6\u30b9\u30c8\u306b\u3064\u3044\u3066\u306f<a href=\"https:\/\/labs.gree.jp\/blog\/?p=23009\">\u6b21\u306e\u8a18\u4e8b<\/a>\u3067\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u304a\u4e45\u3057\u3076\u308a\u3067\u3059\u3001\u30a4\u30f3\u30d5\u30e9\u306e\u3044\u308f\u306a\u3061\u3083\u3093\u3055\u3093(@xcir)\u3067\u3059\u3002 \u5f0a\u793e\u306f\u8907\u6570\u306eCDN\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u304c\u3001Akamai\u3092\u4e3b\u306b\u5229\u7528\u3057\u3066\u304a\u308a\u591a\u6570\u306e\u914d\u4fe1\u8a2d\u5b9a(\u30d7\u30ed\u30d1\u30c6\u30a3)\u3092\u904b\u7528\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u307e\u3067\u306f\u65b0\u898f\u30d7\u30ed\u30d1\u30c6\u30a3\u306fAkamai  [&hellip;]<\/p>\n","protected":false},"author":136,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[176],"class_list":["post-22991","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-info","tag-akamai"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts\/22991","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/users\/136"}],"replies":[{"embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/comments?post=22991"}],"version-history":[{"count":38,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts\/22991\/revisions"}],"predecessor-version":[{"id":23079,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/posts\/22991\/revisions\/23079"}],"wp:attachment":[{"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/media?parent=22991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/categories?post=22991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labs.gree.jp\/blog\/wp-json\/wp\/v2\/tags?post=22991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}