{"id":2373,"date":"2025-03-24T08:47:34","date_gmt":"2025-03-23T23:47:34","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2373"},"modified":"2025-03-24T08:47:56","modified_gmt":"2025-03-23T23:47:56","slug":"aws-cli-x-lambda%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a15%e3%81%ae%e5%ae%9f%e8%b7%b5%e7%9a%84%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%81%a85%e3%81%a4%e3%81%ae%e8%87%aa%e5%8b%95","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2373","title":{"rendered":"AWS CLI \u00d7 Lambda\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a15\u306e\u5b9f\u8df5\u7684\u30b3\u30de\u30f3\u30c9\u30685\u3064\u306e\u81ea\u52d5\u5316\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">AWS CLI\u3068Lambda\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">AWS CLI\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3068\u8a8d\u8a3c\u8a2d\u5b9a\u624b\u9806<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">Lambda\u95a2\u6570\u306e\u57fa\u672c\u6982\u5ff5\u3068\u4e3b\u8981\u30b3\u30de\u30f3\u30c9\u4e00\u89a7<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-3\">AWS CLI\u3092\u4f7f\u7528\u3057\u305fLambda\u95a2\u6570\u306e\u4f5c\u6210\u3068\u7ba1\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-4\">create-function\u30b3\u30de\u30f3\u30c9\u306b\u3088\u308b\u95a2\u6570\u4f5c\u6210\u306e\u8a73\u7d30\u624b\u9806<\/a>      <\/li>      <li>        <a href=\"#i-5\">update-function-code\u306b\u3088\u308b\u30b3\u30fc\u30c9\u66f4\u65b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-6\">\u95a2\u6570\u306e\u8a2d\u5b9a\u5909\u66f4\u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-7\">Lambda\u95a2\u6570\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u81ea\u52d5\u5316<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-8\">\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u7528\u3057\u305f\u4e00\u62ec\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-9\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306eAWS CLI\u6d3b\u7528\u8853<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-10\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-11\">\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-12\">CloudWatch\u30ed\u30b0\u306e\u53d6\u5f97\u3068\u5206\u6790\u624b\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-13\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3068\u5fdc\u7528\u4f8b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-14\">\u30d0\u30c3\u30c1\u51e6\u7406\u306e\u81ea\u52d5\u5316\u5b9f\u88c5\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-15\">\u74b0\u5883\u9593\u3067\u306eLambda\u95a2\u6570\u30b3\u30d4\u30fc\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-16\">\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u5fa9\u5143\u306e\u81ea\u52d5\u5316\u30b7\u30ca\u30ea\u30aa<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-17\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u30b3\u30b9\u30c8\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-18\">IAM\u30ed\u30fc\u30eb\u3068\u30dd\u30ea\u30b7\u30fc\u306e\u9069\u5207\u306a\u8a2d\u5b9a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-19\">\u30b3\u30b9\u30c8\u52b9\u7387\u306e\u826f\u3044Lambda\u95a2\u6570\u306e\u8a2d\u8a08\u3068\u904b\u7528<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">AWS CLI\u3068Lambda\u306e\u57fa\u790e\u77e5\u8b58<\/h2>\n\n\n\n<p>AWS\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u52b9\u7387\u7684\u306b\u64cd\u4f5c\u3059\u308b\u305f\u3081\u306b\u306f\u3001AWS Command Line Interface\uff08AWS CLI\uff09\u306e\u4f7f\u7528\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u7279\u306bLambda\u95a2\u6570\u306e\u7ba1\u7406\u3067\u306f\u3001AWS CLI\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u591a\u304f\u306e\u4f5c\u696d\u3092\u81ea\u52d5\u5316\u3057\u3001\u958b\u767a\u52b9\u7387\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">AWS CLI\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3068\u8a8d\u8a3c\u8a2d\u5b9a\u624b\u9806<\/h3>\n\n\n\n<p>AWS CLI\u3092\u4f7f\u7528\u958b\u59cb\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>AWS CLI\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<p>\u5404OS\u306b\u5fdc\u3058\u305f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># macOS\u306e\u5834\u5408\uff08Homebrew\u3092\u4f7f\u7528\uff09\nbrew install awscli\n\n# Ubuntu\u306e\u5834\u5408\nsudo apt-get update\nsudo apt-get install awscli\n\n# Windows\uff08PowerShell\uff09\u306e\u5834\u5408\nmsiexec.exe \/i https:\/\/awscli.amazonaws.com\/AWSCLIV2.msi<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<p>AWS CLI\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u9069\u5207\u306aIAM\u30e6\u30fc\u30b6\u30fc\u306e\u8a8d\u8a3c\u60c5\u5831\u304c\u5fc5\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">aws configure\n\n# \u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u9806\u306b\u5165\u529b\nAWS Access Key ID: [\u3042\u306a\u305f\u306e\u30a2\u30af\u30bb\u30b9\u30ad\u30fc]\nAWS Secret Access Key: [\u3042\u306a\u305f\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30ad\u30fc]\nDefault region name: [\u4f7f\u7528\u3059\u308b\u30ea\u30fc\u30b8\u30e7\u30f3 e.g., ap-northeast-1]\nDefault output format: [\u51fa\u529b\u5f62\u5f0f e.g., json]<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u306e\u78ba\u8a8d<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8a2d\u5b9a\u3055\u308c\u305f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u4e00\u89a7\u306e\u78ba\u8a8d\naws configure list\n\n# \u8a8d\u8a3c\u60c5\u5831\u306e\u78ba\u8a8d\naws sts get-caller-identity<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">Lambda\u95a2\u6570\u306e\u57fa\u672c\u6982\u5ff5\u3068\u4e3b\u8981\u30b3\u30de\u30f3\u30c9\u4e00\u89a7<\/h3>\n\n\n\n<p>Lambda\u95a2\u6570\u3092\u64cd\u4f5c\u3059\u308b\u969b\u306e\u4e3b\u8981\u306aAWS CLI\u30b3\u30de\u30f3\u30c9\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u95a2\u6570\u306e\u4f5c\u6210<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">aws lambda create-function \\\n  --function-name my-function \\\n  --runtime python3.9 \\\n  --role arn:aws:iam::123456789012:role\/lambda-role \\\n  --handler app.lambda_handler \\\n  --zip-file fileb:\/\/function.zip<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u95a2\u6570\u306e\u4e00\u89a7\u8868\u793a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5168\u3066\u306e\u95a2\u6570\u3092\u4e00\u89a7\u8868\u793a\naws lambda list-functions\n\n# \u7279\u5b9a\u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u6301\u3064\u95a2\u6570\u3092\u691c\u7d22\naws lambda list-functions --function-version ALL --query 'Functions[?starts_with(FunctionName, `my-`)]'<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u95a2\u6570\u306e\u8a73\u7d30\u60c5\u5831\u53d6\u5f97<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">aws lambda get-function --function-name my-function<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>\u95a2\u6570\u306e\u66f4\u65b0<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30b3\u30fc\u30c9\u306e\u66f4\u65b0\naws lambda update-function-code \\\n  --function-name my-function \\\n  --zip-file fileb:\/\/function.zip\n\n# \u8a2d\u5b9a\u306e\u66f4\u65b0\naws lambda update-function-configuration \\\n  --function-name my-function \\\n  --timeout 30 \\\n  --memory-size 256<\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>\u95a2\u6570\u306e\u524a\u9664<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">aws lambda delete-function --function-name my-function<\/pre>\n\n\n\n<p>AWS CLI\u3067Lambda\u95a2\u6570\u3092\u64cd\u4f5c\u3059\u308b\u969b\u306e\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ZIP\u5f62\u5f0f\u3067\u306e\u30c7\u30d7\u30ed\u30a4\u6642\u306f\u3001\u5fc5\u8981\u306a\u3059\u3079\u3066\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u542b\u3081\u308b<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u3068\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306f\u9069\u5207\u306a\u5024\u3092\u8a2d\u5b9a\u3059\u308b<\/li>\n\n\n\n<li>IAM\u30ed\u30fc\u30eb\u306b\u306f\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u6a29\u9650\u306e\u307f\u3092\u4ed8\u4e0e\u3059\u308b<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u306f\u6a5f\u5bc6\u60c5\u5831\u3092\u542b\u3080\u5834\u5408\u3001KMS\u3067\u6697\u53f7\u5316\u3059\u308b<\/li>\n\n\n\n<li>\u30bf\u30b0\u3092\u4f7f\u7528\u3057\u3066\u95a2\u6570\u306e\u7ba1\u7406\u3092\u52b9\u7387\u5316\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<p>AWS CLI\u3092\u4f7f\u7528\u3057\u305fLambda\u95a2\u6570\u306e\u7ba1\u7406\u306f\u3001\u3053\u308c\u3089\u306e\u57fa\u672c\u7684\u306a\u30b3\u30de\u30f3\u30c9\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306a\u904b\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u305f\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u4f8b\u3068\u5fdc\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">AWS CLI\u3092\u4f7f\u7528\u3057\u305fLambda\u95a2\u6570\u306e\u4f5c\u6210\u3068\u7ba1\u7406<\/h2>\n\n\n\n<p>Lambda\u95a2\u6570\u306e\u52b9\u7387\u7684\u306a\u7ba1\u7406\u306b\u306f\u3001AWS CLI\u306e\u9069\u5207\u306a\u4f7f\u7528\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u624b\u9806\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">create-function\u30b3\u30de\u30f3\u30c9\u306b\u3088\u308b\u95a2\u6570\u4f5c\u6210\u306e\u8a73\u7d30\u624b\u9806<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5fc5\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u6e96\u5099<\/li>\n<\/ol>\n\n\n\n<p>\u307e\u305a\u3001\u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\nmkdir my-lambda-function &amp;&amp; cd my-lambda-function\n\n# Python\u95a2\u6570\u306e\u4f5c\u6210\ncat &gt; lambda_function.py &lt;&lt; 'EOF'\nimport json\n\ndef lambda_handler(event, context):\n    return {\n        'statusCode': 200,\n        'body': json.dumps('Hello from Lambda!')\n    }\nEOF\n\n# \u4f9d\u5b58\u95a2\u4fc2\u304c\u3042\u308b\u5834\u5408\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\npip install -r requirements.txt -t .\n\n# \u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f5c\u6210\nzip -r function.zip .\/*<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>IAM\u30ed\u30fc\u30eb\u306e\u4f5c\u6210<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u4fe1\u983c\u30dd\u30ea\u30b7\u30fc\u306e\u4f5c\u6210\ncat &gt; trust-policy.json &lt;&lt; 'EOF'\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\n        \"Service\": \"lambda.amazonaws.com\"\n      },\n      \"Action\": \"sts:AssumeRole\"\n    }\n  ]\n}\nEOF\n\n# \u30ed\u30fc\u30eb\u306e\u4f5c\u6210\naws iam create-role \\\n    --role-name lambda-basic-role \\\n    --assume-role-policy-document file:\/\/trust-policy.json\n\n# \u57fa\u672c\u7684\u306a\u5b9f\u884c\u30dd\u30ea\u30b7\u30fc\u306e\u30a2\u30bf\u30c3\u30c1\naws iam attach-role-policy \\\n    --role-name lambda-basic-role \\\n    --policy-arn arn:aws:iam::aws:policy\/service-role\/AWSLambdaBasicExecutionRole<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Lambda\u95a2\u6570\u306e\u4f5c\u6210<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u95a2\u6570\u306e\u4f5c\u6210\naws lambda create-function \\\n    --function-name my-function \\\n    --runtime python3.9 \\\n    --role arn:aws:iam::ACCOUNT_ID:role\/lambda-basic-role \\\n    --handler lambda_function.lambda_handler \\\n    --zip-file fileb:\/\/function.zip \\\n    --timeout 30 \\\n    --memory-size 128 \\\n    --tags Project=MyProject,Environment=Dev\n\n# \u4f5c\u6210\u3055\u308c\u305f\u95a2\u6570\u306e\u78ba\u8a8d\naws lambda get-function --function-name my-function<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">update-function-code\u306b\u3088\u308b\u30b3\u30fc\u30c9\u66f4\u65b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c9\u66f4\u65b0\u306e\u57fa\u672c\u624b\u9806<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30b3\u30fc\u30c9\u306e\u4fee\u6b63\u3068\u518d\u30d1\u30c3\u30b1\u30fc\u30b8\u30f3\u30b0\nzip -r new-function.zip .\/*\n\n# \u95a2\u6570\u30b3\u30fc\u30c9\u306e\u66f4\u65b0\naws lambda update-function-code \\\n    --function-name my-function \\\n    --zip-file fileb:\/\/new-function.zip \\\n    --publish\n\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u78ba\u8a8d\naws lambda list-versions-by-function \\\n    --function-name my-function<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3057\u305f\u6bb5\u968e\u7684\u30c7\u30d7\u30ed\u30a4<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u4f5c\u6210\naws lambda create-alias \\\n    --function-name my-function \\\n    --name production \\\n    --function-version 1\n\n# \u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u66f4\u65b0\uff08\u6bb5\u968e\u7684\u30c7\u30d7\u30ed\u30a4\uff09\naws lambda update-alias \\\n    --function-name my-function \\\n    --name production \\\n    --routing-config AdditionalVersionWeights={\"2\"=0.1}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u95a2\u6570\u306e\u8a2d\u5b9a\u5909\u66f4\u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u306e\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\naws lambda update-function-configuration \\\n    --function-name my-function \\\n    --environment \"Variables={DB_HOST=mydb.example.com,API_KEY=secret123}\"\n\n# \u6697\u53f7\u5316\u3055\u308c\u305f\u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\uff08KMS\u4f7f\u7528\uff09\naws lambda update-function-configuration \\\n    --function-name my-function \\\n    --kms-key-arn arn:aws:kms:region:account-id:key\/key-id \\\n    --environment \"Variables={DB_PASSWORD=encrypted-password}\"<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u767a\u884c\naws lambda publish-version \\\n    --function-name my-function \\\n    --description \"Production release v1.0.0\"\n\n# \u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u4f5c\u6210\naws lambda create-alias \\\n    --function-name my-function \\\n    --name prod \\\n    --function-version 1\n\n# \u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u66f4\u65b0\naws lambda update-alias \\\n    --function-name my-function \\\n    --name prod \\\n    --function-version 2<\/pre>\n\n\n\n<p>\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3068\u6ce8\u610f\u4e8b\u9805\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30b5\u30a4\u30ba\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5727\u7e2e\u6642\u306f50MB\u4ee5\u4e0b\u3001\u5c55\u958b\u6642\u306f250MB\u4ee5\u4e0b\u306b\u6291\u3048\u308b<\/li>\n\n\n\n<li>\u4e0d\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u306f\u9664\u5916\u3059\u308b<\/li>\n\n\n\n<li>\u5927\u304d\u306a\u4f9d\u5b58\u95a2\u4fc2\u306fLayer\u3092\u4f7f\u7528\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u91cd\u8981\u306a\u66f4\u65b0\u6642\u306f\u5fc5\u305a\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u767a\u884c<\/li>\n\n\n\n<li>\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u4f7f\u7528\u3057\u3066\u74b0\u5883\u3092\u5206\u96e2<\/li>\n\n\n\n<li>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u624b\u9806\u3092\u6e96\u5099<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306f\u51e6\u7406\u6642\u9593\u306b\u5fdc\u3058\u3066\u9069\u5207\u306b\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u306f\u51e6\u7406\u8ca0\u8377\u306b\u5fdc\u3058\u3066\u8abf\u6574<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u306f\u9069\u5207\u306b\u6697\u53f7\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30d7\u30ed\u30a4\u524d\u306b\u30ed\u30fc\u30ab\u30eb\u3067\u30c6\u30b9\u30c8<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u6642\u306e\u30ea\u30c8\u30e9\u30a4\u8a2d\u5b9a\u3092\u9069\u5207\u306b\u884c\u3046<\/li>\n\n\n\n<li>CloudWatch\u30ed\u30b0\u306e\u76e3\u8996\u8a2d\u5b9a\u3092\u884c\u3046<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u624b\u9806\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001AWS CLI\u3092\u4f7f\u7528\u3057\u305fLambda\u95a2\u6570\u306e\u52b9\u7387\u7684\u306a\u7ba1\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">Lambda\u95a2\u6570\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u81ea\u52d5\u5316<\/h2>\n\n\n\n<p>\u52b9\u7387\u7684\u306aLambda\u95a2\u6570\u306e\u7ba1\u7406\u306b\u306f\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30d7\u30ed\u30bb\u30b9\u306e\u81ea\u52d5\u5316\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u81ea\u52d5\u5316\u624b\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f7f\u7528\u3057\u305f\u4e00\u62ec\u30c7\u30d7\u30ed\u30a4\u306e\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u57fa\u672c\u7684\u306a\u30c7\u30d7\u30ed\u30a4\u30b9\u30af\u30ea\u30d7\u30c8<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# deploy_lambda.sh\n# Lambda\u95a2\u6570\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\n\n# \u8a2d\u5b9a\nFUNCTION_NAME=\"my-function\"\nRUNTIME=\"python3.9\"\nHANDLER=\"lambda_function.lambda_handler\"\nROLE_ARN=\"arn:aws:iam::123456789012:role\/lambda-role\"\nREGION=\"ap-northeast-1\"\n\n# \u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\nTEMP_DIR=$(mktemp -d)\ncp -r .\/* \"$TEMP_DIR\/\"\ncd \"$TEMP_DIR\"\n\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08requirements.txt\u304c\u3042\u308b\u5834\u5408\uff09\nif [ -f requirements.txt ]; then\n    pip install -r requirements.txt -t .\nfi\n\n# \u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f5c\u6210\nzip -r function.zip .\/*\n\n# \u95a2\u6570\u306e\u5b58\u5728\u78ba\u8a8d\nif aws lambda get-function --function-name \"$FUNCTION_NAME\" --region \"$REGION\" 2&gt;\/dev\/null; then\n    # \u65e2\u5b58\u95a2\u6570\u306e\u66f4\u65b0\n    aws lambda update-function-code \\\n        --function-name \"$FUNCTION_NAME\" \\\n        --zip-file fileb:\/\/function.zip \\\n        --region \"$REGION\" \\\n        --publish\nelse\n    # \u65b0\u898f\u95a2\u6570\u306e\u4f5c\u6210\n    aws lambda create-function \\\n        --function-name \"$FUNCTION_NAME\" \\\n        --runtime \"$RUNTIME\" \\\n        --handler \"$HANDLER\" \\\n        --role \"$ROLE_ARN\" \\\n        --zip-file fileb:\/\/function.zip \\\n        --region \"$REGION\"\nfi\n\n# \u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\nrm -rf \"$TEMP_DIR\"<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8907\u6570\u74b0\u5883\u5bfe\u5fdc\u306e\u62e1\u5f35\u30b9\u30af\u30ea\u30d7\u30c8<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\n# deploy_lambda_multi_env.sh\n# \u8907\u6570\u74b0\u5883\u306b\u5bfe\u5fdc\u3057\u305fLambda\u95a2\u6570\u30c7\u30d7\u30ed\u30a4\u30b9\u30af\u30ea\u30d7\u30c8\n\n# \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\nsource .env\n\n# \u5f15\u6570\u30c1\u30a7\u30c3\u30af\nif [ \"$#\" -ne 1 ]; then\n    echo \"Usage: $0 &lt;environment&gt;\"\n    echo \"Environments: dev, staging, prod\"\n    exit 1\nfi\n\nENV=$1\nCONFIG_FILE=\"config.$ENV.json\"\n\n# \u74b0\u5883\u8a2d\u5b9a\u306e\u691c\u8a3c\nif [ ! -f \"$CONFIG_FILE\" ]; then\n    echo \"Configuration file $CONFIG_FILE not found!\"\n    exit 1\nfi\n\n# \u8a2d\u5b9a\u306e\u8aad\u307f\u8fbc\u307f\nFUNCTION_NAME=$(jq -r .function_name \"$CONFIG_FILE\")\nMEMORY_SIZE=$(jq -r .memory_size \"$CONFIG_FILE\")\nTIMEOUT=$(jq -r .timeout \"$CONFIG_FILE\")\nENV_VARS=$(jq -r .environment_variables \"$CONFIG_FILE\")\n\n# \u30c7\u30d7\u30ed\u30a4\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u6e96\u5099\nPACKAGE_DIR=$(mktemp -d)\ncp -r .\/* \"$PACKAGE_DIR\/\"\ncd \"$PACKAGE_DIR\"\n\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nif [ -f requirements.txt ]; then\n    pip install -r requirements.txt -t .\nfi\n\n# \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f5c\u6210\nzip -r function.zip .\/*\n\n# \u95a2\u6570\u306e\u66f4\u65b0\naws lambda update-function-code \\\n    --function-name \"${FUNCTION_NAME}-${ENV}\" \\\n    --zip-file fileb:\/\/function.zip\n\n# \u8a2d\u5b9a\u306e\u66f4\u65b0\naws lambda update-function-configuration \\\n    --function-name \"${FUNCTION_NAME}-${ENV}\" \\\n    --memory-size \"$MEMORY_SIZE\" \\\n    --timeout \"$TIMEOUT\" \\\n    --environment \"Variables=$ENV_VARS\"\n\n# \u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\nrm -rf \"$PACKAGE_DIR\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306eAWS CLI\u6d3b\u7528\u8853<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GitHub Actions\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u4f8b<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .github\/workflows\/deploy-lambda.yml\nname: Deploy Lambda\n\non:\n  push:\n    branches: [ main, develop ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        python-version: [3.9]\n\n    steps:\n    - uses: actions\/checkout@v2\n\n    - name: Set up Python\n      uses: actions\/setup-python@v2\n      with:\n        python-version: ${{ matrix.python-version }}\n\n    - name: Configure AWS Credentials\n      uses: aws-actions\/configure-aws-credentials@v1\n      with:\n        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n        aws-region: ap-northeast-1\n\n    - name: Install dependencies\n      run: |\n        python -m pip install --upgrade pip\n        if [ -f requirements.txt ]; then pip install -r requirements.txt -t .; fi\n\n    - name: Run tests\n      run: python -m pytest tests\/\n\n    - name: Create deployment package\n      run: |\n        zip -r function.zip .\/*\n\n    - name: Deploy to Dev\n      if: github.ref == 'refs\/heads\/develop'\n      run: |\n        aws lambda update-function-code \\\n          --function-name my-function-dev \\\n          --zip-file fileb:\/\/function.zip\n\n    - name: Deploy to Production\n      if: github.ref == 'refs\/heads\/main'\n      run: |\n        aws lambda update-function-code \\\n          --function-name my-function-prod \\\n          --zip-file fileb:\/\/function.zip \\\n          --publish\n\n        # \u30a8\u30a4\u30ea\u30a2\u30b9\u306e\u66f4\u65b0\n        VERSION=$(aws lambda list-versions-by-function \\\n          --function-name my-function-prod \\\n          --query 'Versions[-1].Version' \\\n          --output text)\n\n        aws lambda update-alias \\\n          --function-name my-function-prod \\\n          --name production \\\n          --function-version $VERSION<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u81ea\u52d5\u5316\u306e\u5229\u70b9<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4eba\u7684\u30df\u30b9\u306e\u9632\u6b62<\/li>\n\n\n\n<li>\u30c7\u30d7\u30ed\u30a4\u6642\u9593\u306e\u77ed\u7e2e<\/li>\n\n\n\n<li>\u4e00\u8cab\u6027\u306e\u3042\u308b\u74b0\u5883\u7ba1\u7406<\/li>\n\n\n\n<li>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u306e\u5bb9\u6613\u3055<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b9\u30af\u30ea\u30d7\u30c8\u4f5c\u6210\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30ed\u30b0\u51fa\u529b\u306e\u5145\u5b9f<\/li>\n\n\n\n<li>\u8a2d\u5b9a\u306e\u5916\u90e8\u5316<\/li>\n\n\n\n<li>\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u51e6\u7406\u306e\u78ba\u5b9f\u306a\u5b9f\u884c<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u8a2d\u8a08\u30dd\u30a4\u30f3\u30c8<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u74b0\u5883\u5206\u96e2\u306e\u5fb9\u5e95<\/li>\n\n\n\n<li>\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u7ba1\u7406\u306e\u9069\u5207\u306a\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8\u81ea\u52d5\u5316\u306e\u7d44\u307f\u8fbc\u307f<\/li>\n\n\n\n<li>\u30c7\u30d7\u30ed\u30a4\u627f\u8a8d\u30d5\u30ed\u30fc\u306e\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8003\u616e\u4e8b\u9805<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IAM\u30ed\u30fc\u30eb\u306e\u6700\u5c0f\u6a29\u9650\u539f\u5247<\/li>\n\n\n\n<li>\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u306e\u5b89\u5168\u306a\u7ba1\u7406<\/li>\n\n\n\n<li>\u76e3\u67fb\u30ed\u30b0\u306e\u6709\u52b9\u5316<\/li>\n\n\n\n<li>\u627f\u8a8d\u30d5\u30ed\u30fc\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u81ea\u52d5\u5316\u624b\u6cd5\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001Lambda\u95a2\u6570\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u3092\u52b9\u7387\u5316\u3057\u3001\u904b\u7528\u306e\u54c1\u8cea\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-10\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/h2>\n\n\n\n<p>Lambda\u95a2\u6570\u306e\u904b\u7528\u306b\u304a\u3044\u3066\u3001\u52b9\u679c\u7684\u306a\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306f\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u4e00\u822c\u7684\u306a\u554f\u984c\u306e\u89e3\u6c7a\u65b9\u6cd5\u3068\u76e3\u8996\u624b\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u95a2\u9023\u306e\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc: \u30d1\u30c3\u30b1\u30fc\u30b8\u30b5\u30a4\u30ba\u304c\u5927\u304d\u3059\u304e\u308b\nError: Unzipped size must be smaller than 262144000 bytes\n\n# \u89e3\u6c7a\u65b9\u6cd5: \u30d1\u30c3\u30b1\u30fc\u30b8\u30b5\u30a4\u30ba\u306e\u78ba\u8a8d\u3068\u6700\u9069\u5316\ndu -sh function.zip\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u898b\u76f4\u3057\u3068Lambda\u30ec\u30a4\u30e4\u30fc\u306e\u4f7f\u7528\naws lambda publish-layer-version \\\n    --layer-name my-dependencies \\\n    --description \"My function dependencies\" \\\n    --zip-file fileb:\/\/layer.zip \\\n    --compatible-runtimes python3.9<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u5b9f\u884c\u6a29\u9650\u306e\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc: IAM\u30ed\u30fc\u30eb\u306e\u6a29\u9650\u4e0d\u8db3\nAn error occurred (AccessDeniedException) when calling the PutObject operation\n\n# \u89e3\u6c7a\u65b9\u6cd5: IAM\u30dd\u30ea\u30b7\u30fc\u306e\u78ba\u8a8d\u3068\u4fee\u6b63\naws iam get-role-policy \\\n    --role-name lambda-role \\\n    --policy-name permissions\n\n# \u5fc5\u8981\u306a\u6a29\u9650\u306e\u8ffd\u52a0\naws iam put-role-policy \\\n    --role-name lambda-role \\\n    --policy-name s3-permissions \\\n    --policy-document file:\/\/policy.json<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc: Task timed out after 3.00 seconds\n\n# \u89e3\u6c7a\u65b9\u6cd5: \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a\u306e\u5909\u66f4\naws lambda update-function-configuration \\\n    --function-name my-function \\\n    --timeout 10\n\n# \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790\u7528\u306bX-Ray\u3092\u6709\u52b9\u5316\naws lambda update-function-configuration \\\n    --function-name my-function \\\n    --tracing-config Mode=Active<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">CloudWatch\u30ed\u30b0\u306e\u53d6\u5f97\u3068\u5206\u6790\u624b\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ed\u30b0\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u76e3\u8996<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6700\u65b0\u306e\u30ed\u30b0\u306e\u53d6\u5f97\naws logs get-log-events \\\n    --log-group-name \/aws\/lambda\/my-function \\\n    --log-stream-name $(aws logs describe-log-streams \\\n        --log-group-name \/aws\/lambda\/my-function \\\n        --order-by LastEventTime \\\n        --descending \\\n        --limit 1 \\\n        --query 'logStreams[0].logStreamName' \\\n        --output text)\n\n# \u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u691c\u7d22\naws logs filter-log-events \\\n    --log-group-name \/aws\/lambda\/my-function \\\n    --filter-pattern \"ERROR\"<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30e1\u30c8\u30ea\u30af\u30b9\u306e\u76e3\u8996<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5b9f\u884c\u6642\u9593\u306e\u7d71\u8a08\u30c7\u30fc\u30bf\u53d6\u5f97\naws cloudwatch get-metric-statistics \\\n    --namespace AWS\/Lambda \\\n    --metric-name Duration \\\n    --dimensions Name=FunctionName,Value=my-function \\\n    --start-time $(date -u -v-1H \"+%Y-%m-%dT%H:%M:%SZ\") \\\n    --end-time $(date -u \"+%Y-%m-%dT%H:%M:%SZ\") \\\n    --period 300 \\\n    --statistics Average Maximum\n\n# \u30a8\u30e9\u30fc\u7387\u306e\u76e3\u8996\naws cloudwatch get-metric-statistics \\\n    --namespace AWS\/Lambda \\\n    --metric-name Errors \\\n    --dimensions Name=FunctionName,Value=my-function \\\n    --start-time $(date -u -v-1H \"+%Y-%m-%dT%H:%M:%SZ\") \\\n    --end-time $(date -u \"+%Y-%m-%dT%H:%M:%SZ\") \\\n    --period 300 \\\n    --statistics Sum<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30a2\u30e9\u30fc\u30e0\u306e\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc\u7387\u30a2\u30e9\u30fc\u30e0\u306e\u4f5c\u6210\naws cloudwatch put-metric-alarm \\\n    --alarm-name lambda-errors \\\n    --alarm-description \"Lambda function error rate\" \\\n    --metric-name Errors \\\n    --namespace AWS\/Lambda \\\n    --dimensions Name=FunctionName,Value=my-function \\\n    --period 300 \\\n    --evaluation-periods 2 \\\n    --threshold 1 \\\n    --comparison-operator GreaterThanThreshold \\\n    --statistic Sum \\\n    --actions-enabled \\\n    --alarm-actions arn:aws:sns:region:account-id:topic-name\n\n# \u5b9f\u884c\u6642\u9593\u30a2\u30e9\u30fc\u30e0\u306e\u4f5c\u6210\naws cloudwatch put-metric-alarm \\\n    --alarm-name lambda-duration \\\n    --alarm-description \"Lambda function duration\" \\\n    --metric-name Duration \\\n    --namespace AWS\/Lambda \\\n    --dimensions Name=FunctionName,Value=my-function \\\n    --period 300 \\\n    --evaluation-periods 2 \\\n    --threshold 10000 \\\n    --comparison-operator GreaterThanThreshold \\\n    --statistic Average<\/pre>\n\n\n\n<p>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u5206\u6790\u306e\u30a2\u30d7\u30ed\u30fc\u30c1<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ed\u30b0\u30ec\u30d9\u30eb\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u69cb\u9020\u5316\u30ed\u30b0\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u306e\u30ab\u30c6\u30b4\u30ea\u5206\u985e<\/li>\n\n\n\n<li>\u30ea\u30c8\u30e9\u30a4\u6226\u7565\u306e\u5b9f\u88c5<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u6226\u7565<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u91cd\u8981\u30e1\u30c8\u30ea\u30af\u30b9\u306e\u7279\u5b9a<\/li>\n\n\n\n<li>\u30a2\u30e9\u30fc\u30c8\u95be\u5024\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u4f5c\u6210<\/li>\n\n\n\n<li>\u30c8\u30ec\u30f3\u30c9\u5206\u6790\u306e\u5b9f\u65bd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30eb\u30c9\u30b9\u30bf\u30fc\u30c8\u5bfe\u7b56<\/li>\n\n\n\n<li>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u6700\u5c0f\u5316<\/li>\n\n\n\n<li>\u975e\u540c\u671f\u51e6\u7406\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4e88\u9632\u7684\u5bfe\u7b56<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c6\u30b9\u30c8\u74b0\u5883\u3067\u306e\u691c\u8a3c<\/li>\n\n\n\n<li>\u30c7\u30d7\u30ed\u30a4\u524d\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/li>\n\n\n\n<li>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u6226\u7565<\/li>\n\n\n\n<li>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u624b\u9806\u306e\u6e96\u5099<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u624b\u6cd5\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001Lambda\u95a2\u6570\u306e\u5b89\u5b9a\u904b\u7528\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-13\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3068\u5fdc\u7528\u4f8b<\/h2>\n\n\n\n<p>Lambda\u95a2\u6570\u306e\u6d3b\u7528\u65b9\u6cd5\u3092\u5177\u4f53\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3068\u5171\u306b\u89e3\u8aac\u3057\u307e\u3059\u3002\u5b9f\u969b\u306e\u696d\u52d9\u3067\u4f7f\u7528\u3067\u304d\u308b\u5b9f\u88c5\u4f8b\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u30d0\u30c3\u30c1\u51e6\u7406\u306e\u81ea\u52d5\u5316\u5b9f\u88c5\u4f8b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>S3\u30a4\u30d9\u30f3\u30c8\u30c8\u30ea\u30ac\u30fc\u306b\u3088\u308b\u753b\u50cf\u51e6\u7406<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Lambda\u95a2\u6570\u306e\u4f5c\u6210\naws lambda create-function \\\n    --function-name image-processor \\\n    --runtime python3.9 \\\n    --role arn:aws:iam::123456789012:role\/lambda-s3-role \\\n    --handler process_image.lambda_handler \\\n    --timeout 30 \\\n    --memory-size 256 \\\n    --code file:\/\/function.zip\n\n# S3\u30a4\u30d9\u30f3\u30c8\u901a\u77e5\u306e\u8a2d\u5b9a\naws s3api put-bucket-notification-configuration \\\n    --bucket my-image-bucket \\\n    --notification-configuration file:\/\/notification.json\n\n# notification.json \u306e\u5185\u5bb9\n{\n    \"LambdaFunctionConfigurations\": [\n        {\n            \"LambdaFunctionArn\": \"arn:aws:lambda:region:account-id:function:image-processor\",\n            \"Events\": [\"s3:ObjectCreated:*\"],\n            \"Filter\": {\n                \"Key\": {\n                    \"FilterRules\": [\n                        {\n                            \"Name\": \"suffix\",\n                            \"Value\": \".jpg\"\n                        }\n                    ]\n                }\n            }\n        }\n    ]\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u5b9a\u671f\u7684\u306a\u30c7\u30fc\u30bf\u30d0\u30c3\u30af\u30a2\u30c3\u30d7<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u7528Lambda\u95a2\u6570\u306e\u4f5c\u6210\naws lambda create-function \\\n    --function-name db-backup \\\n    --runtime python3.9 \\\n    --role arn:aws:iam::123456789012:role\/lambda-backup-role \\\n    --handler backup.lambda_handler \\\n    --timeout 300 \\\n    --memory-size 512 \\\n    --code file:\/\/backup-function.zip\n\n# CloudWatch\u30a4\u30d9\u30f3\u30c8\u30eb\u30fc\u30eb\u306e\u4f5c\u6210\uff08\u6bce\u65e5\u6df1\u591c\u306b\u5b9f\u884c\uff09\naws events put-rule \\\n    --name daily-backup \\\n    --schedule-expression \"cron(0 0 * * ? *)\"\n\n# Lambda\u3092EventBridge\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u3057\u3066\u8ffd\u52a0\naws events put-targets \\\n    --rule daily-backup \\\n    --targets \"Id\"=\"1\",\"Arn\"=\"arn:aws:lambda:region:account-id:function:db-backup\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u74b0\u5883\u9593\u3067\u306eLambda\u95a2\u6570\u30b3\u30d4\u30fc\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u95a2\u6570\u306e\u30af\u30ed\u30b9\u30ea\u30fc\u30b8\u30e7\u30f3\u30b3\u30d4\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n# copy_lambda.sh\n# Lambda\u95a2\u6570\u3092\u5225\u30ea\u30fc\u30b8\u30e7\u30f3\u306b\u30b3\u30d4\u30fc\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\n\nSOURCE_REGION=\"ap-northeast-1\"\nTARGET_REGION=\"us-west-2\"\nFUNCTION_NAME=\"my-function\"\n\n# \u95a2\u6570\u8a2d\u5b9a\u306e\u53d6\u5f97\nCONFIG=$(aws lambda get-function-configuration \\\n    --function-name $FUNCTION_NAME \\\n    --region $SOURCE_REGION)\n\n# \u95a2\u6570\u30b3\u30fc\u30c9\u306e\u53d6\u5f97\nCODE_LOCATION=$(aws lambda get-function \\\n    --function-name $FUNCTION_NAME \\\n    --region $SOURCE_REGION \\\n    --query 'Code.Location' \\\n    --output text)\n\n# \u30b3\u30fc\u30c9\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\ncurl -o function.zip \"$CODE_LOCATION\"\n\n# \u65b0\u30ea\u30fc\u30b8\u30e7\u30f3\u3067\u306e\u95a2\u6570\u4f5c\u6210\naws lambda create-function \\\n    --function-name $FUNCTION_NAME \\\n    --runtime $(echo $CONFIG | jq -r .Runtime) \\\n    --role $(echo $CONFIG | jq -r .Role) \\\n    --handler $(echo $CONFIG | jq -r .Handler) \\\n    --timeout $(echo $CONFIG | jq -r .Timeout) \\\n    --memory-size $(echo $CONFIG | jq -r .MemorySize) \\\n    --environment \"Variables=$(echo $CONFIG | jq -r .Environment.Variables)\" \\\n    --region $TARGET_REGION \\\n    --zip-file fileb:\/\/function.zip<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b9\u30c6\u30fc\u30b8\u9593\u306e\u30b3\u30d4\u30fc\uff08\u958b\u767a\u2192\u672c\u756a\uff09<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n# promote_to_prod.sh\n# \u958b\u767a\u74b0\u5883\u304b\u3089\u672c\u756a\u74b0\u5883\u3078Lambda\u95a2\u6570\u3092\u6607\u683c\u3055\u305b\u308b\u30b9\u30af\u30ea\u30d7\u30c8\n\nFUNCTION_NAME=\"my-function\"\nDEV_ALIAS=\"dev\"\nPROD_ALIAS=\"prod\"\n\n# \u958b\u767a\u74b0\u5883\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u53d6\u5f97\nDEV_VERSION=$(aws lambda list-versions-by-function \\\n    --function-name $FUNCTION_NAME \\\n    --query 'Versions[-1].Version' \\\n    --output text)\n\n# \u672c\u756a\u74b0\u5883\u3078\u306e\u30c7\u30d7\u30ed\u30a4\naws lambda update-alias \\\n    --function-name $FUNCTION_NAME \\\n    --name $PROD_ALIAS \\\n    --function-version $DEV_VERSION\n\n# \u30c7\u30d7\u30ed\u30a4\u5c65\u6b74\u306e\u8a18\u9332\nTIMESTAMP=$(date +%Y%m%d_%H%M%S)\naws dynamodb put-item \\\n    --table-name lambda-deployments \\\n    --item '{\n        \"FunctionName\": {\"S\": \"'$FUNCTION_NAME'\"},\n        \"Timestamp\": {\"S\": \"'$TIMESTAMP'\"},\n        \"Version\": {\"S\": \"'$DEV_VERSION'\"},\n        \"Environment\": {\"S\": \"production\"}\n    }'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3068\u5fa9\u5143\u306e\u81ea\u52d5\u5316\u30b7\u30ca\u30ea\u30aa<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5b9a\u671f\u7684\u306a\u8a2d\u5b9a\u30d0\u30c3\u30af\u30a2\u30c3\u30d7<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n# backup_lambda_config.sh\n# Lambda\u95a2\u6570\u306e\u8a2d\u5b9a\u3092\u5b9a\u671f\u7684\u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\n\nBACKUP_BUCKET=\"lambda-backups\"\nTIMESTAMP=$(date +%Y%m%d_%H%M%S)\n\n# \u5168\u95a2\u6570\u306e\u30ea\u30b9\u30c8\u53d6\u5f97\nFUNCTIONS=$(aws lambda list-functions --query 'Functions[].FunctionName' --output text)\n\nfor FUNC in $FUNCTIONS; do\n    # \u95a2\u6570\u8a2d\u5b9a\u306e\u53d6\u5f97\u3068\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\n    aws lambda get-function-configuration \\\n        --function-name $FUNC \\\n        | jq '.' &gt; \"${FUNC}_config.json\"\n\n    # \u95a2\u6570\u30b3\u30fc\u30c9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\n    CODE_URL=$(aws lambda get-function \\\n        --function-name $FUNC \\\n        --query 'Code.Location' \\\n        --output text)\n    curl -o \"${FUNC}_code.zip\" \"$CODE_URL\"\n\n    # S3\u3078\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n    aws s3 cp \"${FUNC}_config.json\" \\\n        \"s3:\/\/${BACKUP_BUCKET}\/${TIMESTAMP}\/${FUNC}\/\"\n    aws s3 cp \"${FUNC}_code.zip\" \\\n        \"s3:\/\/${BACKUP_BUCKET}\/${TIMESTAMP}\/${FUNC}\/\"\ndone<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u969c\u5bb3\u6642\u306e\u5fa9\u5143\u30d7\u30ed\u30bb\u30b9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n# restore_lambda.sh\n# \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304b\u3089Lambda\u95a2\u6570\u3092\u5fa9\u5143\u3059\u308b\u30b9\u30af\u30ea\u30d7\u30c8\n\nBACKUP_BUCKET=\"lambda-backups\"\nBACKUP_DATE=\"20240120_235959\"\nFUNCTION_NAME=\"my-function\"\n\n# \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u53d6\u5f97\naws s3 cp \\\n    \"s3:\/\/${BACKUP_BUCKET}\/${BACKUP_DATE}\/${FUNCTION_NAME}\/${FUNCTION_NAME}_config.json\" \\\n    .\naws s3 cp \\\n    \"s3:\/\/${BACKUP_BUCKET}\/${BACKUP_DATE}\/${FUNCTION_NAME}\/${FUNCTION_NAME}_code.zip\" \\\n    .\n\n# \u8a2d\u5b9a\u306e\u5fa9\u5143\nCONFIG=$(cat \"${FUNCTION_NAME}_config.json\")\n\n# \u95a2\u6570\u306e\u66f4\u65b0\naws lambda update-function-configuration \\\n    --function-name $FUNCTION_NAME \\\n    --runtime $(echo $CONFIG | jq -r .Runtime) \\\n    --handler $(echo $CONFIG | jq -r .Handler) \\\n    --timeout $(echo $CONFIG | jq -r .Timeout) \\\n    --memory-size $(echo $CONFIG | jq -r .MemorySize) \\\n    --environment \"Variables=$(echo $CONFIG | jq -r .Environment.Variables)\"\n\n# \u30b3\u30fc\u30c9\u306e\u5fa9\u5143\naws lambda update-function-code \\\n    --function-name $FUNCTION_NAME \\\n    --zip-file fileb:\/\/${FUNCTION_NAME}_code.zip<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30c1\u51e6\u7406\u81ea\u52d5\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30ea\u30c8\u30e9\u30a4\u6a5f\u69cb\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30ed\u30b0\u51fa\u529b\u306e\u5f37\u5316<\/li>\n\n\n\n<li>\u51e6\u7406\u72b6\u614b\u306e\u7ba1\u7406<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u74b0\u5883\u9593\u30b3\u30d4\u30fc<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u306e\u6574\u5408\u6027\u78ba\u8a8d<\/li>\n\n\n\n<li>\u6a29\u9650\u306e\u9069\u5207\u306a\u79fb\u884c<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u5fb9\u5e95<\/li>\n\n\n\n<li>\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u624b\u9806\u306e\u6e96\u5099<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u5fa9\u5143<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u306e\u6574\u5408\u6027\u78ba\u4fdd<\/li>\n\n\n\n<li>\u6697\u53f7\u5316\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u4fdd\u5b58\u671f\u9593\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u5fa9\u5143\u30c6\u30b9\u30c8\u306e\u5b9f\u65bd<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3092\u53c2\u8003\u306b\u3001\u696d\u52d9\u306b\u5408\u308f\u305b\u305f\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3092\u884c\u3046\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306aLambda\u95a2\u6570\u306e\u904b\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-17\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u30b3\u30b9\u30c8\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<p>Lambda\u95a2\u6570\u306e\u904b\u7528\u306b\u304a\u3044\u3066\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u30b3\u30b9\u30c8\u7ba1\u7406\u306f\u6700\u3082\u91cd\u8981\u306a\u8981\u7d20\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a\u3068\u30b3\u30b9\u30c8\u6700\u9069\u5316\u306e\u624b\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">IAM\u30ed\u30fc\u30eb\u3068\u30dd\u30ea\u30b7\u30fc\u306e\u9069\u5207\u306a\u8a2d\u5b9a\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6700\u5c0f\u6a29\u9650\u306e\u539f\u5247\u306b\u57fa\u3065\u304fIAM\u30dd\u30ea\u30b7\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"MinimalS3Access\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"s3:GetObject\",\n                \"s3:PutObject\"\n            ],\n            \"Resource\": [\n                \"arn:aws:s3:::my-bucket\/input\/*\",\n                \"arn:aws:s3:::my-bucket\/output\/*\"\n            ]\n        },\n        {\n            \"Sid\": \"MinimalDynamoDBAccess\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"dynamodb:GetItem\",\n                \"dynamodb:PutItem\"\n            ],\n            \"Resource\": \"arn:aws:dynamodb:region:account-id:table\/my-table\"\n        },\n        {\n            \"Sid\": \"CloudWatchLogging\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"logs:CreateLogGroup\",\n                \"logs:CreateLogStream\",\n                \"logs:PutLogEvents\"\n            ],\n            \"Resource\": \"arn:aws:logs:region:account-id:log-group:\/aws\/lambda\/*\"\n        }\n    ]\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30a2\u306a\u74b0\u5883\u5909\u6570\u306e\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># KMS\u30ad\u30fc\u306e\u4f5c\u6210\naws kms create-key \\\n    --description \"Lambda Encryption Key\" \\\n    --policy file:\/\/key-policy.json\n\n# \u74b0\u5883\u5909\u6570\u306e\u6697\u53f7\u5316\u8a2d\u5b9a\naws lambda update-function-configuration \\\n    --function-name my-function \\\n    --kms-key-arn arn:aws:kms:region:account-id:key\/key-id \\\n    --environment \"Variables={\n        DB_PASSWORD=AQICAHgHhq...,\n        API_KEY=AQICAHgQhw...\n    }\"\n\n# \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306e\u8a2d\u5b9a\uff08VPC\u5185\u306eLambda\u7528\uff09\naws ec2 create-security-group \\\n    --group-name lambda-sg \\\n    --description \"Security group for Lambda functions\"\n\naws ec2 authorize-security-group-ingress \\\n    --group-id sg-1234567890abcdef0 \\\n    --protocol tcp \\\n    --port 443 \\\n    --cidr 10.0.0.0\/16<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u76e3\u67fb\u3068\u30b3\u30f3\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># CloudTrail\u306e\u6709\u52b9\u5316\naws cloudtrail create-trail \\\n    --name lambda-audit-trail \\\n    --s3-bucket-name my-audit-bucket \\\n    --include-global-service-events \\\n    --is-multi-region-trail \\\n    --enable-logging\n\n# CloudWatch Logs\u3067\u306e\u76e3\u67fb\u30ed\u30b0\u5206\u6790\naws logs create-log-metric-filter \\\n    --log-group-name \/aws\/lambda\/my-function \\\n    --filter-name suspicious-activity \\\n    --filter-pattern \"ERROR\" \\\n    --metric-transformations \\\n        metricName=SuspiciousActivity,metricNamespace=SecurityMetrics,metricValue=1<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u30b3\u30b9\u30c8\u52b9\u7387\u306e\u826f\u3044Lambda\u95a2\u6570\u306e\u8a2d\u8a08\u3068\u904b\u7528<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30b9\u30c8\u5206\u6790\u3068\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30b3\u30b9\u30c8\u3068\u4f7f\u7528\u72b6\u6cc1\u306e\u5206\u6790\naws cloudwatch get-metric-statistics \\\n    --namespace AWS\/Lambda \\\n    --metric-name Duration \\\n    --dimensions Name=FunctionName,Value=my-function \\\n    --start-time $(date -u -v-30d \"+%Y-%m-%dT%H:%M:%SZ\") \\\n    --end-time $(date -u \"+%Y-%m-%dT%H:%M:%SZ\") \\\n    --period 86400 \\\n    --statistics Average Sum\n\n# \u30b3\u30b9\u30c8\u30a2\u30e9\u30fc\u30c8\u306e\u8a2d\u5b9a\naws cloudwatch put-metric-alarm \\\n    --alarm-name lambda-cost-alert \\\n    --alarm-description \"Lambda cost threshold exceeded\" \\\n    --metric-name Duration \\\n    --namespace AWS\/Lambda \\\n    --statistic Sum \\\n    --period 86400 \\\n    --threshold 1000000 \\\n    --comparison-operator GreaterThanThreshold \\\n    --evaluation-periods 1 \\\n    --alarm-actions arn:aws:sns:region:account-id:cost-alert-topic<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u306e\u6700\u9069\u5316\u30c6\u30b9\u30c8\u30b9\u30af\u30ea\u30d7\u30c8\n#!\/bin\/bash\n\nFUNCTION_NAME=\"my-function\"\nMEMORY_SIZES=(128 256 512 1024 2048)\n\nfor MEMORY in \"${MEMORY_SIZES[@]}\"; do\n    echo \"Testing with ${MEMORY}MB memory\"\n\n    # \u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u306e\u66f4\u65b0\n    aws lambda update-function-configuration \\\n        --function-name $FUNCTION_NAME \\\n        --memory-size $MEMORY\n\n    # \u30c6\u30b9\u30c8\u5b9f\u884c\n    for i in {1..10}; do\n        aws lambda invoke \\\n            --function-name $FUNCTION_NAME \\\n            --payload '{\"test\": \"data\"}' \\\n            --query 'ExecutedVersion' \\\n            output.json\n    done\n\n    # \u5b9f\u884c\u6642\u9593\u306e\u7d71\u8a08\u53d6\u5f97\n    aws cloudwatch get-metric-statistics \\\n        --namespace AWS\/Lambda \\\n        --metric-name Duration \\\n        --dimensions Name=FunctionName,Value=$FUNCTION_NAME \\\n        --start-time $(date -u -v-5M \"+%Y-%m-%dT%H:%M:%SZ\") \\\n        --end-time $(date -u \"+%Y-%m-%dT%H:%M:%SZ\") \\\n        --period 300 \\\n        --statistics Average\ndone<\/pre>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u30b3\u30b9\u30c8\u6700\u9069\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6700\u5c0f\u6a29\u9650\u306e\u539f\u5247\u306e\u5fb9\u5e95<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\u306e\u6697\u53f7\u5316<\/li>\n\n\n\n<li>VPC\u30a2\u30af\u30bb\u30b9\u306e\u5236\u9650<\/li>\n\n\n\n<li>\u76e3\u67fb\u30ed\u30b0\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>\u5b9a\u671f\u7684\u306a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30d3\u30e5\u30fc<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30b9\u30c8\u6700\u9069\u5316\u624b\u6cd5<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u30e1\u30e2\u30ea\u30b5\u30a4\u30ba\u306e\u9078\u629e<\/li>\n\n\n\n<li>\u30b3\u30fc\u30eb\u30c9\u30b9\u30bf\u30fc\u30c8\u306e\u6700\u5c0f\u5316<\/li>\n\n\n\n<li>\u5b9f\u884c\u6642\u9593\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u540c\u6642\u5b9f\u884c\u6570\u306e\u7ba1\u7406<\/li>\n\n\n\n<li>\u30ea\u30bd\u30fc\u30b9\u306e\u52b9\u7387\u7684\u306a\u4f7f\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u904b\u7528\u7ba1\u7406\u306e\u30dd\u30a4\u30f3\u30c8<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306e\u81ea\u52d5\u5316<\/li>\n\n\n\n<li>\u30a2\u30e9\u30fc\u30c8\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u5b9a\u671f\u7684\u306a\u30b3\u30b9\u30c8\u5206\u6790<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30ea\u30bd\u30fc\u30b9\u4f7f\u7528\u7387\u306e\u76e3\u8996<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9\u5bfe\u5fdc<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u76e3\u67fb\u30ed\u30b0\u306e\u4fdd\u7ba1<\/li>\n\n\n\n<li>\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u306e\u7ba1\u7406<\/li>\n\n\n\n<li>\u6697\u53f7\u5316\u306e\u5fb9\u5e95<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d1\u30c3\u30c1\u306e\u9069\u7528<\/li>\n\n\n\n<li>\u30b3\u30f3\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9\u8981\u4ef6\u306e\u9075\u5b88<\/li>\n<\/ul>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u8a08<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u591a\u5c64\u9632\u5fa1\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u8a8d\u8a3c\u30fb\u8a8d\u53ef\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30c7\u30fc\u30bf\u306e\u6697\u53f7\u5316<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30a2\u306a\u901a\u4fe1\u306e\u78ba\u4fdd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30b9\u30c8\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528\u72b6\u6cc1\u306e\u53ef\u8996\u5316<\/li>\n\n\n\n<li>\u4e88\u7b97\u7ba1\u7406\u306e\u81ea\u52d5\u5316<\/li>\n\n\n\n<li>\u30ea\u30bd\u30fc\u30b9\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u7121\u99c4\u306e\u524a\u6e1b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u904b\u7528\u52b9\u7387\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u81ea\u52d5\u5316\u306e\u63a8\u9032<\/li>\n\n\n\n<li>\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306e\u5f37\u5316<\/li>\n\n\n\n<li>\u30a2\u30e9\u30fc\u30c8\u8a2d\u5b9a\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u6574\u5099<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u5b89\u5168\u304b\u3064\u30b3\u30b9\u30c8\u52b9\u7387\u306e\u826f\u3044Lambda\u95a2\u6570\u306e\u904b\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":{"0":"post-2373","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2373"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2373\/revisions"}],"predecessor-version":[{"id":2375,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2373\/revisions\/2375"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}