{"componentChunkName":"component---node-modules-rocketseat-gatsby-theme-docs-core-src-templates-docs-query-js","path":"/tips/IaC/cdk/sam/","result":{"data":{"mdx":{"id":"7093a391-1a80-50b0-8614-b9cd139484a2","excerpt":"Introduction Pythonを使って、AWSサーバーレスFWのSAMをcdkのリソースを使ってローカルで検証した際のTip TL;DR CDK(Cloud Development Kit)で作成したSAMリソースをローカル環境で試す Python 前提 事前にcdk,cdkをインストール済み CDK…","fields":{"slug":"/tips/IaC/cdk/sam/"},"frontmatter":{"title":"CDKでサーバーレスFWのSAM環境をローカル検証するTip","description":"Awsのcdkを用いてAws SAMの環境をローカルで検証","image":null,"disableTableOfContents":null},"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"CDKでサーバーレスFWのSAM環境をローカル検証するTip\",\n  \"description\": \"Awsのcdkを用いてAws SAMの環境をローカルで検証\",\n  \"showTitle\": true\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"introduction\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#introduction\",\n    \"aria-label\": \"introduction permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"Introduction\"), mdx(\"p\", null, \"Python\\u3092\\u4F7F\\u3063\\u3066\\u3001AWS\\u30B5\\u30FC\\u30D0\\u30FC\\u30EC\\u30B9FW\\u306ESAM\\u3092cdk\\u306E\\u30EA\\u30BD\\u30FC\\u30B9\\u3092\\u4F7F\\u3063\\u3066\\u30ED\\u30FC\\u30AB\\u30EB\\u3067\\u691C\\u8A3C\\u3057\\u305F\\u969B\\u306ETip\"), mdx(\"h2\", {\n    \"id\": \"tldr\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#tldr\",\n    \"aria-label\": \"tldr permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"TL;DR\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"CDK(Cloud Development Kit)\\u3067\\u4F5C\\u6210\\u3057\\u305FSAM\\u30EA\\u30BD\\u30FC\\u30B9\\u3092\\u30ED\\u30FC\\u30AB\\u30EB\\u74B0\\u5883\\u3067\\u8A66\\u3059\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Python\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"span\", {\n    style: {\n      \"color\": \"red\"\n    }\n  }, \"local\\u74B0\\u5883\\u3067\\u691C\\u8A3C\\u306F\\u3067\\u304D\\u308B\\u304Ccdk deploy\\u306F\\u3067\\u304D\\u306A\\u3044\"))), mdx(\"h2\", {\n    \"id\": \"前提\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#%E5%89%8D%E6%8F%90\",\n    \"aria-label\": \"前提 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"\\u524D\\u63D0\"), mdx(\"p\", null, \"\\u4E8B\\u524D\\u306Bcdk,cdk\\u3092\\u30A4\\u30F3\\u30B9\\u30C8\\u30FC\\u30EB\\u6E08\\u307F\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\",\n    \"metastring\": \"title=cdkのインストール\",\n    \"title\": \"cdkのインストール\"\n  }), \"$ npm install -g aws-cdk\\n\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\",\n    \"metastring\": \"title=sam-cliのインストール\",\n    \"title\": \"sam-cliのインストール\"\n  }), \"$ brew tap aws/tap\\n$ brew install aws-sam-cli\\n\")), mdx(\"h2\", {\n    \"id\": \"cdkでpython環境を構築\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#cdk%E3%81%A7python%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89\",\n    \"aria-label\": \"cdkでpython環境を構築 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"CDK\\u3067Python\\u74B0\\u5883\\u3092\\u69CB\\u7BC9\"), mdx(\"p\", null, \"\\u305D\\u308C\\u3067\\u306F\\u4F5C\\u6210\\u3057\\u3066\\u3044\\u304D\\u307E\\u3059\\u3002\\u4F5C\\u6210\\u3059\\u308B\\u30D5\\u30A9\\u30EB\\u30C0\\u306F\\u7A7A\\u3067\\u3042\\u308B\\u5FC5\\u8981\\u304C\\u3042\\u308B\\u306E\\u3067\\u4ECA\\u56DE\\u306F\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"mkdir CDKsampleApp\"), \"\\u3068\\u4F5C\\u6210\\u3057\\u305D\\u306E\\u4E2D\\u3067\\u4F5C\\u696D\\u3092\\u884C\\u306A\\u3063\\u3066\\u3044\\u304D\\u307E\\u3059\\u3002\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cd CDKsampleApp\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), \"$ cdk init app --language=python\\n$ source .env/bin/activate\\n\")), mdx(\"p\", null, \"\\u4ECA\\u56DESAM\\u3092\\u5229\\u7528\\u3059\\u308B\\u306E\\u3067,\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"setup.py\"), \"\\u306B\\u8FFD\\u8A18\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-python\",\n    \"metastring\": \"title=setup.py\",\n    \"title\": \"setup.py\"\n  }), \"...\\n    install_requires=[\\n        \\\"aws-cdk.core==1.32.1\\\",\\n        \\\"aws-cdk.aws-sam, #\\u8FFD\\u52A0\\n    ],\\n...\\n\")), mdx(\"p\", null, \"\\u6E96\\u5099\\u304C\\u3067\\u304D\\u305F\\u306E\\u3067CDK init\\u3067\\u4F5C\\u6210\\u3057\\u305F.env\\u74B0\\u5883\\u306B\\u30A4\\u30F3\\u30B9\\u30C8\\u30FC\\u30EB\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), \"$ source .env/bin/activate\\n$ pip install -r requirements.txt \\n\")), mdx(\"p\", null, \"\\u8A66\\u3057\\u306B\\u30C7\\u30D7\\u30ED\\u30A4\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), \"$ cdk deploy\\ncd-ksample-app: deploying...\\ncd-ksample-app: creating CloudFormation changeset...\\n 0/2 | 16:02:07 | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack | cd-ksample-app User Initiated\\n 0/2 | 16:02:11 | CREATE_IN_PROGRESS   | AWS::CDK::Metadata | CDKMetadata \\n 0/2 | 16:02:13 | CREATE_IN_PROGRESS   | AWS::CDK::Metadata | CDKMetadata Resource creation Initiated\\n 1/2 | 16:02:13 | CREATE_COMPLETE      | AWS::CDK::Metadata | CDKMetadata \\n 2/2 | 16:02:15 | CREATE_COMPLETE      | AWS::CloudFormation::Stack | cd-ksample-app \\n\\n \\u2705  cd-ksample-app\\n\\nStack ARN:\\narn:aws:cloudformation:us-east-1:xxxxxxxxxxxxxxx:stack/cd-ksample-app/xxxxxxxxxxxxxxxxxxxxxx\\n\")), mdx(\"h2\", {\n    \"id\": \"samの環境を構築\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#sam%E3%81%AE%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89\",\n    \"aria-label\": \"samの環境を構築 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"SAM\\u306E\\u74B0\\u5883\\u3092\\u69CB\\u7BC9\"), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://docs.aws.amazon.com/cdk/api/latest/docs/aws-sam-readme.html\"\n  }), \"AWS CDK\\u306ESAM\"), \"\\u306E\\u516C\\u5F0F\\u304C\\u3053\\u3061\\u3089\\u3002\"), mdx(\"h3\", {\n    \"id\": \"1sam用のスタックを追加\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#1sam%E7%94%A8%E3%81%AE%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%92%E8%BF%BD%E5%8A%A0\",\n    \"aria-label\": \"1sam用のスタックを追加 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"1.SAM\\u7528\\u306E\\u30B9\\u30BF\\u30C3\\u30AF\\u3092\\u8FFD\\u52A0\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cd_ksample_app/cd_ksample_app_stack.py\"), \"\\u306B\\u4E0B\\u8A18\\u3092\\u8FFD\\u52A0\\u3057\\u307E\\u3059\\u3002\"), mdx(\"p\", null, \"\\u30AF\\u30E9\\u30B9\\u540D\\u306F\\u5404\\u81EA\\u306E\\u74B0\\u5883\\u306B\\u3088\\u3063\\u3066\\u5909\\u308F\\u308B\\u306E\\u3067\\u304A\\u6C17\\u3092\\u3064\\u3051\\u3066\\u304F\\u3060\\u3055\\u3044\\u3002\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-python\",\n    \"metastring\": \"title=cd_ksample_app_stack.py\",\n    \"title\": \"cd_ksample_app_stack.py\"\n  }), \"\\nfrom aws_cdk import core,aws_sam as sam\\n\\n\\nclass CdKampleAppStack(core.Stack):#\\n\\n    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:\\n        super().__init__(scope, id, **kwargs)\\n\\n        # The code that defines your stack goes here\\n        function = sam.CfnFunction(    \\n            self,    \\n            \\\"CDKSamFunction\\\",    \\n            runtime=\\\"python3.7\\\",    \\n            handler=\\\"api.lambda_handler\\\",    \\n            code_uri=\\\"lambda_example/\\\",    \\n            events={    \\n                \\\"HelloWorld\\\": {    \\n                    \\\"type\\\": \\\"Api\\\",    \\n                    \\\"properties\\\": {\\\"method\\\": \\\"get\\\", \\\"path\\\": \\\"/example\\\"},    \\n                }    \\n            },    \\n        ) \\n\")), mdx(\"h3\", {\n    \"id\": \"2lambda関数を作成\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#2lambda%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%9C%E6%88%90\",\n    \"aria-label\": \"2lambda関数を作成 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"2.Lambda\\u95A2\\u6570\\u3092\\u4F5C\\u6210\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"mkdir lambda_example\"), \"\\u30D5\\u30A9\\u30EB\\u30C0\\u3092\\u4F5C\\u6210\\u3057\\u305D\\u306E\\u4E2D\\u306B\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"api.py\"), \"\\u3092\\u4F5C\\u6210\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-python\",\n    \"metastring\": \"title=api.py\",\n    \"title\": \"api.py\"\n  }), \"import json\\n\\ndef lambda_handler(event, context):    \\n    return {\\n        \\\"statusCode\\\": 200,\\n        \\\"body\\\": json.dumps( \\n            {                        \\n                \\\"message\\\": \\\"hello world\\\",\\n            }\\n        ),\\n    }\\n\")), mdx(\"p\", null, \"\\u3053\\u3053\\u307E\\u3067\\u3067\\u4E0B\\u8A18\\u306E\\u69CB\\u6210\\u3068\\u306A\\u308A\\u307E\\u3059\\u3002\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-title=$tree\"\n  }), \"\\u251C\\u2500\\u2500 README.md\\n\\u251C\\u2500\\u2500 app.py\\n\\u251C\\u2500\\u2500 cdk.json\\n\\u251C\\u2500\\u2500 cdk_sam_app\\n\\u2502\\xA0\\xA0 \\u251C\\u2500\\u2500 __init__.py\\n\\u2502\\xA0\\xA0 \\u251C\\u2500\\u2500 cdk_sam_app.egg-info\\n\\u2502\\xA0\\xA0 \\u2502\\xA0\\xA0 \\u251C\\u2500\\u2500 PKG-INFO\\n\\u2502\\xA0\\xA0 \\u2502\\xA0\\xA0 \\u251C\\u2500\\u2500 SOURCES.txt\\n\\u2502\\xA0\\xA0 \\u2502\\xA0\\xA0 \\u251C\\u2500\\u2500 dependency_links.txt\\n\\u2502\\xA0\\xA0 \\u2502\\xA0\\xA0 \\u251C\\u2500\\u2500 requires.txt\\n\\u2502\\xA0\\xA0 \\u2502\\xA0\\xA0 \\u2514\\u2500\\u2500 top_level.txt\\n\\u2502\\xA0\\xA0 \\u2514\\u2500\\u2500 cdk_sam_app_stack.py\\n\\u251C\\u2500\\u2500 lambda_example\\n\\u2502\\xA0\\xA0 \\u2514\\u2500\\u2500 api.py\\n\\u251C\\u2500\\u2500 requirements.txt\\n\\u251C\\u2500\\u2500 setup.py\\n\\u2514\\u2500\\u2500 source.bat\\n\")), mdx(\"h3\", {\n    \"id\": \"3最後に-cloudformationのtemplateymlを作成・修正\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h3\"\n  }, {\n    \"href\": \"#3%E6%9C%80%E5%BE%8C%E3%81%AB-cloudformation%E3%81%AEtemplateyml%E3%82%92%E4%BD%9C%E6%88%90%E3%83%BB%E4%BF%AE%E6%AD%A3\",\n    \"aria-label\": \"3最後に cloudformationのtemplateymlを作成・修正 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"3.\\u6700\\u5F8C\\u306B CloudFormation\\u306Etemplate.yml\\u3092\\u4F5C\\u6210\\u30FB\\u4FEE\\u6B63\"), mdx(\"p\", null, \"$ cdk synth --no-staging > template.yml\"), mdx(\"p\", null, \"property\\u304C\\u4E0A\\u624B\\u304F\\u51FA\\u529B\\u3055\\u308C\\u306A\\u3044\\u306E\\u3067\\u4FEE\\u6B63\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-yml\",\n    \"metastring\": \"title=template.yml\",\n    \"title\": \"template.yml\"\n  }), \"...\\n  CDKSamFunction:\\n    Type: AWS::Serverless::Function\\n    Properties:\\n      CodeUri: lambda_example/\\n      Handler: app.lambda_handler\\n      Runtime: python3.7\\n      Events:\\n        CdkLambdaExample:\\n          Properties: \\n            Path: /example       # \\u8FFD\\u52A0 \\n            Method: get          # \\u8FFD\\u52A0\\n          Type: Api\\n...\\n\")), mdx(\"h2\", {\n    \"id\": \"local-で検証\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#local-%E3%81%A7%E6%A4%9C%E8%A8%BC\",\n    \"aria-label\": \"local で検証 permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"local \\u3067\\u691C\\u8A3C\"), mdx(\"p\", null, \"\\u3053\\u3053\\u307E\\u3067\\u3067\\u4F5C\\u6210\\u3055\\u308C\\u305F\\u30EA\\u30BD\\u30FC\\u30B9\\u3068SAM CLI\\u3092\\u7528\\u3044\\u3066\\u30ED\\u30FC\\u30AB\\u30EB\\u3067\\u691C\\u8A3C\\u3057\\u307E\\u3059\\u3002\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), \"$ sam local start-api -t template.yml \\nMounting CDKSamFunction at http://127.0.0.1:3000/example [GET]\\nYou can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template\\n2020-04-11 15:37:42  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)\\n\")), mdx(\"p\", null, \"\\u7121\\u4E8B\\u8D77\\u52D5\\u304C\\u78BA\\u8A8D\\u3067\\u304D\\u305F\\u3089\\u5225\\u306E\\u30AF\\u30E9\\u30A4\\u30A2\\u30F3\\u30C8\\u3092\\u7ACB\\u3061\\u4E0A\\u3052curl\\u3067\\u30EA\\u30AF\\u30A8\\u30B9\\u30C8\\u3092\\u9001\\u3063\\u3066\\u307F\\u308B\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), \"$ curl http://127.0.0.1:3000/example\\n{\\\"message\\\": \\\"hello world\\\"}\\n\")), mdx(\"p\", null, \"\\u3053\\u308C\\u3067\\u6210\\u529F\"), mdx(\"p\", null, \"\\u4E0A\\u8A18\\u306E3.\\u3067template.yml\\u3092\\u4FEE\\u6B63\\u3057\\u3066\\u3044\\u306A\\u3044\\u5834\\u5408\\u4E0B\\u8A18\\u306E\\u30A8\\u30E9\\u30FC\\u3068\\u306A\\u308B\\u306E\\u3067\\u6CE8\\u610F\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), \"$ sam local start-api -t template.yml \\n....\\uFF08\\u7701\\u7565\\uFF09\\n    path = event_properties.get(SamApiProvider._EVENT_PATH)\\nAttributeError: 'NoneType' object has no attribute 'get'\\n\")), mdx(\"h2\", {\n    \"id\": \"cdk-deployができないのでdestroy\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#cdk-deploy%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7destroy\",\n    \"aria-label\": \"cdk deployができないのでdestroy permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"CDK deploy\\u304C\\u3067\\u304D\\u306A\\u3044\\u306E\\u3067destroy\"), mdx(\"p\", null, \"\\u30ED\\u30FC\\u30AB\\u30EB\\u3067\\u306E\\u691C\\u8A3C\\u306F\\u554F\\u984C\\u306A\\u3044\\u304C2020\\u5E744\\u6708\\u6642\\u70B9\\u3067\\u306Fproperty\\u3082\\u624B\\u52D5\\u3067\\u5909\\u66F4\\u3057\\u305F\\u901A\\u308A\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"cdk deploy\"), \"\\u306F\\u52D5\\u304B\\u306A\\u3044\\u3002\\u8FFD\\u3063\\u3066\\u60C5\\u5831\\u3092\\u8FFD\\u3063\\u3066\\u3044\\u304D\\u307E\\u3059\\u3002\\n\\u3068\\u3044\\u3046\\u4E8B\\u306A\\u306E\\u3067\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"$ cdk destroy  cd-ksample-app\"), \"\\u3067\\u30B5\\u30AF\\u30C3\\u3068\\u30EA\\u30BD\\u30FC\\u30B9\\u3092\\u524A\\u9664\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-sh\"\n  }), \"$ cdk destroy  cd-ksample-app\\nAre you sure you want to delete: cd-ksample-app (y/n)? y\\ncd-ksample-app: destroying...\\n\\n \\u2705  cd-ksample-app: destroyed\\n\\n\")), mdx(\"p\", null, \"\\u7121\\u4E8B\\u304A\\u3055\\u3089\\u3070\\u3067\\u304D\\u307E\\u3057\\u305F\\u3002\"));\n}\n;\nMDXContent.isMDXComponent = true;","headings":[{"depth":2,"value":"Introduction"},{"depth":2,"value":"TL;DR"},{"depth":2,"value":"前提"},{"depth":2,"value":"CDKでPython環境を構築"},{"depth":2,"value":"SAMの環境を構築"},{"depth":3,"value":"1.SAM用のスタックを追加"},{"depth":3,"value":"2.Lambda関数を作成"},{"depth":3,"value":"3.最後に CloudFormationのtemplate.ymlを作成・修正"},{"depth":2,"value":"local で検証"},{"depth":2,"value":"CDK deployができないのでdestroy"}]}},"pageContext":{"slug":"/tips/IaC/cdk/sam/","prev":{"label":"CDK-ECS-Fargate-FastAPI","link":"/tips/IaC/cdk/fargate-fastAPI"},"next":{"label":"CDK-Lambda-APIGateway","link":"/tips/IaC/cdk/lambda-apigateway"},"githubEditUrl":"https:/github.com/rocketseat/gatsby-themes/tree/master/examples/gatsby-theme-docs/src/docs/tips/IaC/cdk/sam.mdx"}}}