{"id":24799,"date":"2025-11-22T23:52:28","date_gmt":"2025-11-22T23:52:28","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=24799"},"modified":"2025-11-22T23:52:28","modified_gmt":"2025-11-22T23:52:28","slug":"ecs%e3%81%ae%e6%96%b0%e6%a9%9f%e8%83%bdexpress%e3%83%a2%e3%83%bc%e3%83%89%e3%81%a7%e3%80%81%e8%aa%8d%e8%a8%bc%e3%81%a4%e3%81%8dstreamlit%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%aba","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/24799\/","title":{"rendered":"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI &#8211; Qiita"},"content":{"rendered":"\n<\/p>\n<div>\n<div data-sourcepos=\"1:1-3:3\" class=\"note info\">\n<span class=\"fa fa-fw fa-check-circle\"\/><\/p>\n<div>\n<p data-sourcepos=\"2:1-2:86\">11\/22 20:40\u66f4\u65b0\uff1a Dockerfile\u3092\u66f4\u65b0\u3057\u5fd8\u308c\u3066\u3044\u305f\u305f\u3081\u53cd\u6620\u3057\u307e\u3057\u305f\ud83d\ude4f<\/p>\n<\/div>\n<\/div>\n<p data-sourcepos=\"5:1-5:79\">Amazon ECS\u306e\u65b0\u6a5f\u80fd\u300c\u30a8\u30af\u30b9\u30d7\u30ec\u30b9\u30e2\u30fc\u30c9\u300d\u304c\u767b\u5834\u3057\u307e\u3057\u305f\u3002<\/p>\n<p data-sourcepos=\"7:1-7:136\"><iframe id=\"qiita-embed-content__d7e97860c1ab9c4c4e8633164276fce9\" src=\"https:\/\/qiita.com\/embed-contents\/link-card#qiita-embed-content__d7e97860c1ab9c4c4e8633164276fce9\" data-content=\"https%3A%2F%2Faws.amazon.com%2Fjp%2Fblogs%2Faws%2Fbuild-production-ready-applications-without-infrastructure-complexity-using-amazon-ecs-express-mode%2F\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\" style=\"width:100%;\" height=\"29\"><br \/>\n<\/iframe>\n<\/p>\n<p data-sourcepos=\"9:1-9:225\">ECR\u306b\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3055\u3048\u30d7\u30c3\u30b7\u30e5\u3057\u3066\u304a\u3051\u3070\u3001\u9762\u5012\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3084\u30bf\u30b9\u30af\u5b9a\u7fa9\u306a\u3069\u306e\u6e96\u5099\u3092\u305b\u305a\u3068\u3082\u3001\u7c21\u5358\u306bECS\u5468\u308a\u306e\u30a4\u30f3\u30d5\u30e9\u3092\u307e\u3068\u3081\u3066\u81ea\u52d5\u69cb\u7bc9\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n<ul data-sourcepos=\"14:1-20:0\">\n<li data-sourcepos=\"14:1-14:83\">ECR\u3078\u306e\u30a4\u30e1\u30fc\u30b8\u30d7\u30c3\u30b7\u30e5\u307e\u3067\u306f\u81ea\u5206\u3067\u3084\u3063\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b<\/li>\n<li data-sourcepos=\"15:1-15:110\">\u4f5c\u6210\u30a6\u30a3\u30b6\u30fc\u30c9\u3067\u3001\u8a73\u7d30\u8a2d\u5b9a\u3092\u5909\u66f4\u305b\u305a\u9032\u3081\u308b\u3068\u30c7\u30d5\u30a9\u30eb\u30c8VPC\u306b\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u308b<\/li>\n<li data-sourcepos=\"16:1-16:110\">\u540c\u3058\u304f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u5834\u5408\u3001ALB\u30fb\u30bf\u30b9\u30af\u3068\u3082\u306b\u30d1\u30d6\u30ea\u30c3\u30af\u30b5\u30d6\u30cd\u30c3\u30c8\u306b\u914d\u7f6e\u3055\u308c\u308b<\/li>\n<li data-sourcepos=\"17:1-17:96\">\u5b9f\u884c\u74b0\u5883\u306fFargate\u3002x86\u7cfb\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u305f\u3081Mac\u3067\u30d3\u30eb\u30c9\u3059\u308b\u969b\u306f\u6ce8\u610f<\/li>\n<li data-sourcepos=\"18:1-20:0\">\u30b5\u30fc\u30d3\u30b9\u3092\u524a\u9664\u3059\u308b\u3068\u3001\u81ea\u52d5\u4f5c\u6210\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u3092\u307e\u3068\u3081\u3066\u6383\u9664\u3057\u3066\u304f\u308c\u308b<\/li>\n<\/ul>\n<h3 data-sourcepos=\"21:1-21:25\">\n<span id=\"\u3053\u308c\u307e\u3067\u306e\u8ab2\u984c\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E3%81%93%E3%82%8C%E3%81%BE%E3%81%A7%E3%81%AE%E8%AA%B2%E9%A1%8C\"><i class=\"fa fa-link\"\/><\/a>\u3053\u308c\u307e\u3067\u306e\u8ab2\u984c<\/h3>\n<p data-sourcepos=\"23:1-23:248\">\u7279\u306bBedrock\u306a\u3069\u306eAI\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3092Streamlit\u3067\u958b\u767a\u3057\u305f\u3068\u304d\u3001WebSocket\u306b\u5bfe\u5fdc\u3057\u305f\u30a4\u30f3\u30d5\u30e9\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001AWS App Runner\u306a\u3069\u306e\u304a\u624b\u8efd\u30c7\u30d7\u30ed\u30a4\u304c\u4f7f\u3048\u306a\u3044\u306e\u304c\u3053\u308c\u307e\u3067\u306e\u8ab2\u984c\u3067\u3057\u305f\u3002<\/p>\n<p data-sourcepos=\"25:1-27:93\">\u304b\u3068\u3044\u3063\u3066ECS\u3092\u81ea\u5206\u3067\u69cb\u7bc9\u3059\u308b\u306e\u306f\u3001\u7279\u306b\u521d\u5fc3\u8005\u306b\u3068\u3063\u3066\u306f\u305d\u308c\u306a\u308a\u306e\u30cf\u30fc\u30c9\u30eb\u3067\u3059\u3002<br \/>App Runner\u306e\u3088\u3046\u306a\u30b5\u30fc\u30d0\u30fc\u30ec\u30b9\u3067\u306f\u306a\u3044\u305f\u3081\u3001\u30c7\u30d7\u30ed\u30a4\u5f8c\u306f\u30e9\u30f3\u30cb\u30f3\u30b0\u30b3\u30b9\u30c8\u304c\u767a\u751f\u3057\u7d9a\u3051\u308b\u70b9\u306b\u306f\u6ce8\u610f\u3067\u3059\u3002<br \/>\uff08\u69cb\u6210\u306b\u3082\u3088\u308a\u307e\u3059\u304c\u3001\u3056\u3063\u304f\u308a\u6708\u984d\u6570\u5343\u5186\u301c\u3050\u3089\u3044\u304c\u30df\u30cb\u30de\u30e0\uff1f\uff09<\/p>\n<p data-sourcepos=\"32:1-33:107\">ECS Express Mode\u306f\u3001\u6b8b\u5ff5\u306a\u304c\u3089Docker\u30a4\u30e1\u30fc\u30b8\u306e\u69cb\u7bc9\u3092\u81ea\u5206\u3067\u3084\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<br \/>App Runner\u3084Amplify\u306e\u3088\u3046\u306b\u3001GitHub\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u7d10\u4ed8\u3051\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u307b\u3057\u304b\u3063\u305f\u2026\uff01<\/p>\n<div data-sourcepos=\"35:1-37:3\" class=\"note info\">\n<span class=\"fa fa-fw fa-check-circle\"\/><\/p>\n<div>\n<p data-sourcepos=\"36:1-36:96\">\u3053\u306e\u30cf\u30f3\u30ba\u30aa\u30f3\u3067\u306f\u3001AWS\u30d0\u30fc\u30b8\u30cb\u30a2\u5317\u90e8\u30ea\u30fc\u30b8\u30e7\u30f3\u306e\u307f\u3092\u5229\u7528\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n<h3 data-sourcepos=\"40:1-40:37\">\n<span id=\"ecr\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3059\u308b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#ecr%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B\"><i class=\"fa fa-link\"\/><\/a>ECR\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3059\u308b<\/h3>\n<p data-sourcepos=\"42:1-42:142\">\u5341\u5206\u306a\u6a29\u9650\u3092\u3082\u3064IAM\u30e6\u30fc\u30b6\u30fc\u3067AWS\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u30b5\u30a4\u30f3\u30a4\u30f3\u3057\u3001<code>reg<\/code> \u3068\u691c\u7d22\u3057\u3066Amazon ECR\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"44:1-44:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F3c4d6927-d8e8-4dca-9364-07763e275ea4.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=5b349d8bcf4a862cb96d95542dcaeaf6\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F3c4d6927-d8e8-4dca-9364-07763e275ea4.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=5b349d8bcf4a862cb96d95542dcaeaf6\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 15.00.51.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F3c4d6927-d8e8-4dca-9364-07763e275ea4.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=dea90e83e53f6783e7cb774186df2997 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/3c4d6927-d8e8-4dca-9364-07763e275ea4.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"47:1-48:96\">\u30c8\u30c3\u30d7\u30da\u30fc\u30b8\u306e\u300c\u4f5c\u6210\u300d\u30dc\u30bf\u30f3\u304b\u3089\u3001\u65b0\u898f\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\u30ea\u30dd\u30b8\u30c8\u30ea\u540d\u306f <code>simple-streamlit-chatbot<\/code> \u306b\u3057\u3066\u3001\u4ed6\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067OK\u3067\u3059\u3002<\/p>\n<h3 data-sourcepos=\"51:1-51:55\">\n<span id=\"\u30b3\u30f3\u30c6\u30ca\u69cb\u7bc9\u7528\u306e\u958b\u767a\u74b0\u5883\u3092\u8d77\u52d5\u3059\u308b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E6%A7%8B%E7%AF%89%E7%94%A8%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B\"><i class=\"fa fa-link\"\/><\/a>\u30b3\u30f3\u30c6\u30ca\u69cb\u7bc9\u7528\u306e\u958b\u767a\u74b0\u5883\u3092\u8d77\u52d5\u3059\u308b<\/h3>\n<p data-sourcepos=\"53:1-53:216\">AWS CloudShell\u3092\u4f7f\u3048\u306a\u3044\u304b\u9811\u5f35\u3063\u305f\u306e\u3067\u3059\u304c\u3001\u30c7\u30a3\u30b9\u30af\u304c1GB\u3057\u304b\u306a\u3044\u306e\u3067\u7121\u7406\u30b2\u30fc\u3067\u3057\u305f\u3002\u5927\u4eba\u3057\u304f\u30ed\u30fc\u30ab\u30ebPC\u3082\u3057\u304f\u306fGitHub Codespaces\u306a\u3069\u3092\u4f7f\u3046\u3053\u3068\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<p data-sourcepos=\"55:1-56:52\">\u4ee5\u4e0b\u3088\u308a\u3001<code>simple-streamlit-chatbot<\/code> \u3068\u3044\u3046\u540d\u524d\u3067\u65b0\u898f\u30d1\u30d6\u30ea\u30c3\u30af\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/><code>Add README<\/code> \u3092\u30aa\u30f3\u306b\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<p data-sourcepos=\"58:1-58:22\"><iframe id=\"qiita-embed-content__6f046af86b6772da7b713ab9b5184838\" src=\"https:\/\/qiita.com\/embed-contents\/link-card#qiita-embed-content__6f046af86b6772da7b713ab9b5184838\" data-content=\"https%3A%2F%2Fgithub.com%2Fnew\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\" style=\"width:100%;\" height=\"29\"><br \/>\n<\/iframe>\n<\/p>\n<p data-sourcepos=\"60:1-60:42\">\u30b3\u30fc\u30c9\u30b9\u30da\u30fc\u30b9\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"62:1-62:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F47dd0698-6c4f-410b-9814-c8b557fae149.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=37bddd65eb7ffd4e5dc456d44c32f28b\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F47dd0698-6c4f-410b-9814-c8b557fae149.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=37bddd65eb7ffd4e5dc456d44c32f28b\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 14.55.09.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F47dd0698-6c4f-410b-9814-c8b557fae149.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=233a50c038038e9d947268078f78fcd4 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/47dd0698-6c4f-410b-9814-c8b557fae149.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"64:1-64:52\">AWS CLI\u306e\u6700\u65b0\u7248\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-frame\" data-lang=\"text\" data-sourcepos=\"66:1-78:3\">\n<div class=\"highlight\">\n<pre><code># \u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\ncurl \"https:\/\/awscli.amazonaws.com\/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\"\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u89e3\u51cd\nunzip awscliv2.zip\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u5b9f\u884c\nsudo .\/aws\/install\n\n# \u4e0d\u8981\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\nrm -rf awscliv2.zip aws\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p data-sourcepos=\"80:1-80:99\">\u30bf\u30fc\u30df\u30ca\u30eb\u304b\u3089\u81ea\u5206\u306eAWS\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u64cd\u4f5c\u3067\u304d\u308b\u3088\u3046\u3001\u8a8d\u8a3c\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"91:1-91:136\"><code>AWS Region [us-east-1]:<\/code> \u3068\u3044\u3046\u30d7\u30ed\u30f3\u30d7\u30c8\u3067\u30ea\u30fc\u30b8\u30e7\u30f3\u3092\u805e\u304b\u308c\u305f\u3089\u3001Enter\u3067\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u307e\u307e\u9032\u3081\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"93:1-93:228\">\u305d\u306e\u5f8c\u3001\u8868\u793a\u3055\u308c\u308bURL\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u4eca\u56de\u4f5c\u696d\u3059\u308bAWS\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30d6\u30e9\u30a6\u30b6\u8a8d\u8a3c\u3092\u884c\u3063\u305f\u3042\u3068\u3001\u691c\u8a3c\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3001\u30b3\u30fc\u30c9\u30b9\u30da\u30fc\u30b9\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u8cbc\u308a\u4ed8\u3051\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"95:1-95:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F7f4e6a68-27a6-468f-9c3f-ce39ab8b8b23.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=212645f336210ecf2f024987f02a567c\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F7f4e6a68-27a6-468f-9c3f-ce39ab8b8b23.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=212645f336210ecf2f024987f02a567c\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 15.02.27.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F7f4e6a68-27a6-468f-9c3f-ce39ab8b8b23.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=b4a026a3abc8f55fbb0bffbc572f3248 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/7f4e6a68-27a6-468f-9c3f-ce39ab8b8b23.png\" loading=\"lazy\"\/><\/a><\/p>\n<h3 data-sourcepos=\"98:1-98:37\">\n<span id=\"streamlit\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#streamlit%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B\"><i class=\"fa fa-link\"\/><\/a>Streamlit\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b<\/h3>\n<p data-sourcepos=\"100:1-100:105\">\u30b3\u30fc\u30c9\u30b9\u30da\u30fc\u30b9\u306e\u5de6\u30b5\u30a4\u30c9\u30d0\u30fc\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u65b0\u898fPython\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-frame\" data-lang=\"python\" data-sourcepos=\"102:1-174:3\">\n<p><span class=\"bold\">app.py<\/span><\/p>\n<div class=\"highlight\">\n<pre><code><span class=\"kn\">import<\/span> <span class=\"n\">asyncio<\/span>\n<span class=\"kn\">import<\/span> <span class=\"n\">streamlit<\/span> <span class=\"k\">as<\/span> <span class=\"n\">st<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">strands<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Agent<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">strands.tools.mcp<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">MCPClient<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">mcp<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">stdio_client<\/span><span class=\"p\">,<\/span> <span class=\"n\">StdioServerParameters<\/span>\n\n<span class=\"c1\"># \u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3092\u63cf\u753b\n<\/span><span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">title<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Strands MCP\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">text<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">AWS\u30ca\u30ec\u30c3\u30b8MCP\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u3063\u3066\u3001Nova Premier\u304c\u3042\u306a\u305f\u306e\u8cea\u554f\u306b\u7b54\u3048\u307e\u3059\uff01<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">prompt<\/span> <span class=\"o\">=<\/span> <span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">chat_input<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">\u8cea\u554f\u3092\u5165\u529b<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">if<\/span> <span class=\"n\">prompt<\/span><span class=\"p\">:<\/span>\n    <span class=\"c1\"># \u30e6\u30fc\u30b6\u30fc\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u8868\u793a\n<\/span>    <span class=\"k\">with<\/span> <span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">chat_message<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">user<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">markdown<\/span><span class=\"p\">(<\/span><span class=\"n\">prompt<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u5fdc\u7b54\u3092\u8868\u793a\n<\/span>    <span class=\"k\">with<\/span> <span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">chat_message<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">assistant<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">with<\/span> <span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">spinner<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">\u8003\u3048\u4e2d\u2026<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n\n            <span class=\"c1\"># MCP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u4f5c\u6210\n<\/span>            <span class=\"n\">client<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">MCPClient<\/span><span class=\"p\">(<\/span><span class=\"k\">lambda<\/span><span class=\"p\">:<\/span> <span class=\"nf\">stdio_client<\/span><span class=\"p\">(<\/span>\n                <span class=\"nc\">StdioServerParameters<\/span><span class=\"p\">(<\/span>\n                    <span class=\"n\">command<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">uvx<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">args<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">awslabs.aws-documentation-mcp-server@latest<\/span><span class=\"sh\">\"<\/span><span class=\"p\">])<\/span>\n                <span class=\"p\">)<\/span>\n            <span class=\"p\">)<\/span>\n\n            <span class=\"k\">with<\/span> <span class=\"n\">client<\/span><span class=\"p\">:<\/span>\n                <span class=\"c1\"># \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u4f5c\u6210\n<\/span>                <span class=\"n\">agent<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Agent<\/span><span class=\"p\">(<\/span>\n                    <span class=\"n\">model<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">us.amazon.nova-premier-v1:0<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">system_prompt<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">\u601d\u8003\u3082\u56de\u7b54\u3082\u65e5\u672c\u8a9e\u3067\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">tools<\/span><span class=\"o\">=<\/span><span class=\"n\">client<\/span><span class=\"p\">.<\/span><span class=\"nf\">list_tools_sync<\/span><span class=\"p\">()<\/span>\n                <span class=\"p\">)<\/span>\n\n                <span class=\"c1\"># \u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u8868\u793a\u306e\u6e96\u5099\n<\/span>                <span class=\"n\">container<\/span> <span class=\"o\">=<\/span> <span class=\"n\">st<\/span><span class=\"p\">.<\/span><span class=\"nf\">container<\/span><span class=\"p\">()<\/span>\n                <span class=\"n\">state<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"sh\">\"<\/span><span class=\"s\">text_holder<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"n\">container<\/span><span class=\"p\">.<\/span><span class=\"nf\">empty<\/span><span class=\"p\">(),<\/span>\n                    <span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"sh\">\"\"<\/span><span class=\"p\">,<\/span>\n                    <span class=\"sh\">\"<\/span><span class=\"s\">shown_tools<\/span><span class=\"sh\">\"<\/span><span class=\"p\">:<\/span> <span class=\"nf\">set<\/span><span class=\"p\">()<\/span>\n                <span class=\"p\">}<\/span>\n\n                <span class=\"c1\"># Strands\u3092\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u5b9f\u884c\u3059\u308b\u975e\u540c\u671f\u95a2\u6570\u3092\u5b9a\u7fa9\n<\/span>                <span class=\"k\">async<\/span> <span class=\"k\">def<\/span> <span class=\"nf\">run_stream<\/span><span class=\"p\">():<\/span>\n                    <span class=\"k\">async<\/span> <span class=\"k\">for<\/span> <span class=\"n\">event<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">agent<\/span><span class=\"p\">.<\/span><span class=\"nf\">stream_async<\/span><span class=\"p\">(<\/span><span class=\"n\">prompt<\/span><span class=\"p\">):<\/span>\n                        <span class=\"n\">current_tool<\/span> <span class=\"o\">=<\/span> <span class=\"n\">event<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">current_tool_use<\/span><span class=\"sh\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">{})<\/span>\n                        <span class=\"n\">tool_id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">current_tool<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">toolUseId<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\n                        <span class=\"n\">tool_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">current_tool<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">name<\/span><span class=\"sh\">'<\/span><span class=\"p\">)<\/span>\n\n                        <span class=\"c1\"># \u30c4\u30fc\u30eb\u5b9f\u884c\u3092\u691c\u51fa\u3057\u3066\u8868\u793a\n<\/span>                        <span class=\"k\">if<\/span> <span class=\"n\">tool_id<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">tool_name<\/span> <span class=\"ow\">and<\/span> <span class=\"n\">tool_id<\/span> <span class=\"ow\">not<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">shown_tools<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]:<\/span>\n                            <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">shown_tools<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">tool_id<\/span><span class=\"p\">)<\/span>\n                            <span class=\"k\">if<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]:<\/span>\n                                <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">text_holder<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"nf\">markdown<\/span><span class=\"p\">(<\/span><span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">])<\/span>\n                                <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"\"<\/span>\n                            <span class=\"n\">container<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"sh\">\"<\/span><span class=\"s\">\ud83d\udd27 **<\/span><span class=\"si\">{<\/span><span class=\"n\">tool_name<\/span><span class=\"si\">}<\/span><span class=\"s\">** \u30c4\u30fc\u30eb\u3092\u5b9f\u884c\u4e2d...<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n                            <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">text_holder<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">container<\/span><span class=\"p\">.<\/span><span class=\"nf\">empty<\/span><span class=\"p\">()<\/span>\n\n                        <span class=\"c1\"># \u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u3057\u3066\u8868\u793a\n<\/span>                        <span class=\"k\">if<\/span> <span class=\"n\">event<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"sh\">'<\/span><span class=\"s\">data<\/span><span class=\"sh\">'<\/span><span class=\"p\">):<\/span>\n                            <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]<\/span> <span class=\"o\">+=<\/span> <span class=\"n\">event<\/span><span class=\"p\">[<\/span><span class=\"sh\">'<\/span><span class=\"s\">data<\/span><span class=\"sh\">'<\/span><span class=\"p\">]<\/span>\n                            <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">text_holder<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"nf\">markdown<\/span><span class=\"p\">(<\/span><span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">\u258c<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n                    <span class=\"c1\"># \u6700\u7d42\u8868\u793a\n<\/span>                    <span class=\"k\">if<\/span> <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">]:<\/span>\n                        <span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">text_holder<\/span><span class=\"sh\">\"<\/span><span class=\"p\">].<\/span><span class=\"nf\">markdown<\/span><span class=\"p\">(<\/span><span class=\"n\">state<\/span><span class=\"p\">[<\/span><span class=\"sh\">\"<\/span><span class=\"s\">buffer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">])<\/span>\n\n                <span class=\"c1\"># \u975e\u540c\u671f\u95a2\u6570\u3092\u5b9f\u884c\n<\/span>                <span class=\"n\">asyncio<\/span><span class=\"p\">.<\/span><span class=\"nf\">run<\/span><span class=\"p\">(<\/span><span class=\"nf\">run_stream<\/span><span class=\"p\">())<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<p data-sourcepos=\"176:1-176:76\">\u540c\u69d8\u306b\u3001\u30b3\u30f3\u30c6\u30ca\u5316\u306b\u5fc5\u8981\u306aDockerfile\u3082\u65b0\u898f\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-frame\" data-lang=\"Dockerfile\" data-sourcepos=\"178:1-195:3\">\n<p><span class=\"bold\"> Dockerfile<\/span><\/p>\n<div class=\"highlight\">\n<pre><code><span class=\"k\">FROM<\/span><span class=\"s\"> python:3.13<\/span>\n\n<span class=\"c\"># \u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/span>\n<span class=\"k\">WORKDIR<\/span><span class=\"s\"> \/app<\/span>\n\n<span class=\"c\"># \u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/span>\n<span class=\"k\">RUN <\/span>pip <span class=\"nb\">install <\/span>uv mcp streamlit strands-agents strands-agents-tools\n\n<span class=\"c\"># \u30a2\u30d7\u30ea\u672c\u4f53\u3092\u30b3\u30d4\u30fc<\/span>\n<span class=\"k\">COPY<\/span><span class=\"s\"> . \/app<\/span>\n\n<span class=\"c\"># \u516c\u958b\u30dd\u30fc\u30c8<\/span>\n<span class=\"k\">EXPOSE<\/span><span class=\"s\"> 80<\/span>\n\n<span class=\"c\"># Streamlit\u3092\u8d77\u52d5<\/span>\n<span class=\"k\">CMD<\/span><span class=\"s\"> [\"streamlit\", \"run\", \"app.py\", \"--server.port=80\", \"--server.address=0.0.0.0\"]<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<h3 data-sourcepos=\"198:1-198:55\">\n<span id=\"\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u767b\u9332\u3059\u308b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B\"><i class=\"fa fa-link\"\/><\/a>\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3066\u767b\u9332\u3059\u308b<\/h3>\n<p data-sourcepos=\"200:1-200:144\">\u5148\u307b\u3069\u306eECR\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u958b\u304f\u3068\u3001\u300c\u30d7\u30c3\u30b7\u30e5\u30b3\u30de\u30f3\u30c9\u3092\u8868\u793a\u300d\u30dc\u30bf\u30f3\u304b\u3089\u5fc5\u8981\u306a\u30b3\u30de\u30f3\u30c9\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"202:1-202:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F0af79deb-7ceb-41ff-92d4-b4ad857c442a.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=32366ebe28e8ad8c8f13ab0d9bb42b08\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F0af79deb-7ceb-41ff-92d4-b4ad857c442a.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=32366ebe28e8ad8c8f13ab0d9bb42b08\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 15.56.44.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F0af79deb-7ceb-41ff-92d4-b4ad857c442a.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=33451e4652d6598047831d2840cc51c1 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/0af79deb-7ceb-41ff-92d4-b4ad857c442a.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"204:1-204:120\">\u30b3\u30fc\u30c9\u30b9\u30da\u30fc\u30b9\u4e0a\u3067\u3001\u3053\u308c\u3089\u306e\u30b3\u30de\u30f3\u30c9\u3092\u3059\u3079\u3066\u9806\u756a\u306b\u5b9f\u884c\u3059\u308c\u3070\u3001\u30d7\u30c3\u30b7\u30e5\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n<p data-sourcepos=\"209:1-209:133\">ECS\u306e\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u300c\u4eca\u3059\u3050\u59cb\u3081\u308b\u300d\u30dc\u30bf\u30f3\u304b\u3089Express\u30e2\u30fc\u30c9\u306e\u30a6\u30a3\u30b6\u30fc\u30c9\u3092\u958b\u304d\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"211:1-211:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F8f0a2ae8-98da-469a-9ff7-5c7e27f61acf.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=76f49759ae0e87c36dbd9bf55ca744f8\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F8f0a2ae8-98da-469a-9ff7-5c7e27f61acf.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=76f49759ae0e87c36dbd9bf55ca744f8\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 16.03.36.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F8f0a2ae8-98da-469a-9ff7-5c7e27f61acf.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=0141ef4bf318d8a6a2c939a32e341bbf 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/8f0a2ae8-98da-469a-9ff7-5c7e27f61acf.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"213:1-213:73\">\u5148\u307b\u3069\u767b\u9332\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u306e <code>latest<\/code> \u30bf\u30b0\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"215:1-215:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fd82d68db-5109-4391-9c93-e58c8c127ab3.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=300e65526f611ef25ac5bc1bb13f552b\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fd82d68db-5109-4391-9c93-e58c8c127ab3.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=300e65526f611ef25ac5bc1bb13f552b\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 16.04.57.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fd82d68db-5109-4391-9c93-e58c8c127ab3.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=b44d5d36031227e0ba29648ab8dff4ff 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/d82d68db-5109-4391-9c93-e58c8c127ab3.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"217:1-218:99\">2\u3064\u306e\u30ed\u30fc\u30eb\u306f\u3001\u30d7\u30eb\u30c0\u30a6\u30f3\u5185\u306e\u300c\u65b0\u3057\u3044\u30ed\u30fc\u30eb\u306e\u4f5c\u6210\u300d\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<br \/>\uff08<code>ecsTaskExecutionRole<\/code>\u3068<code>ecsInfrastructureRoleForExpressServices<\/code>\u304c\u81ea\u52d5\u4f5c\u6210\u3055\u308c\u307e\u3059\uff09<\/p>\n<p data-sourcepos=\"220:1-221:82\">\u300c\u305d\u306e\u4ed6\u306e\u8a2d\u5b9a\u300d\u3092\u5c55\u958b\u3057\u3001\u30bf\u30b9\u30af\u30ed\u30fc\u30eb\u306e\u300c\u65b0\u3057\u3044\u30ed\u30fc\u30eb\u306e\u4f5c\u6210\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002<br \/>Bedrock\u306b\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u6a29\u9650\u3092\u3001ECS\u30bf\u30b9\u30af\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<p data-sourcepos=\"223:1-223:91\">\u30b9\u30c6\u30c3\u30d71\u3067\u306f\u3001\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067ECS\u30bf\u30b9\u30af\u3092\u9078\u629e\u3057\u3066\u6b21\u306b\u9032\u307f\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"225:1-225:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F7ffa5036-4463-4c02-a29d-733399ad4a30.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=6cc6503d2dea9c97c269eea59529d84b\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F7ffa5036-4463-4c02-a29d-733399ad4a30.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=6cc6503d2dea9c97c269eea59529d84b\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 17.00.32.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F7ffa5036-4463-4c02-a29d-733399ad4a30.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=1b63bb367fbb97c0d7feb608deb82101 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/7ffa5036-4463-4c02-a29d-733399ad4a30.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"227:1-227:84\">\u8a31\u53ef\u30dd\u30ea\u30b7\u30fc\u306f <code>AmazonBedrockFullAccess<\/code> \u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u9032\u307f\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"229:1-229:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fa1f70b1b-a595-470b-90a8-9caa04ebbc9a.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=a858133b3420d4d52a1c3309cc04724d\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fa1f70b1b-a595-470b-90a8-9caa04ebbc9a.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=a858133b3420d4d52a1c3309cc04724d\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 17.01.41.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fa1f70b1b-a595-470b-90a8-9caa04ebbc9a.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=6e9c2f10edfdb915ddbc4ba73a73d27f 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/a1f70b1b-a595-470b-90a8-9caa04ebbc9a.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"231:1-231:82\"><code>ecsTaskExecutionRoleWithBedrock<\/code> \u3068\u8a00\u3046\u540d\u524d\u3067\u30ed\u30fc\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"233:1-233:158\">ECS Express\u30e2\u30fc\u30c9\u3092\u4f5c\u6210\u753b\u9762\u306b\u623b\u308a\u3001\u30bf\u30b9\u30af\u30ed\u30fc\u30eb\u6a2a\u306e\u300c\u66f4\u65b0\u300d\u30a2\u30a4\u30b3\u30f3\u3092\u62bc\u3057\u3066\u304b\u3089\u3001\u4f5c\u6210\u3057\u305f\u30ed\u30fc\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"235:1-235:96\">\u305d\u306e\u5f8c\u3001\u300c\u4f5c\u6210\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u30a4\u30f3\u30d5\u30e9\u8af8\u3005\u306e\u69cb\u7bc9\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"237:1-237:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fb0b8dad9-3bf5-461e-a878-ab58296ce617.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=8cf34d7fe168371cd2ca00f2c4074a9b\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fb0b8dad9-3bf5-461e-a878-ab58296ce617.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=8cf34d7fe168371cd2ca00f2c4074a9b\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 16.07.36.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2Fb0b8dad9-3bf5-461e-a878-ab58296ce617.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=b4bd4fc58de854a3e8a649d4ff4b6b9c 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/b0b8dad9-3bf5-461e-a878-ab58296ce617.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"239:1-239:49\">6\u5206\u3050\u3089\u3044\u3067\u30c7\u30d7\u30ed\u30a4\u304c\u5b8c\u4e86\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"241:1-241:189\">\u753b\u9762\u4e0a\u90e8\u306e\u300c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3URL\u300d\u304b\u3089\u3001Streamlit\u30a2\u30d7\u30ea\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u3059\u3002\u3053\u306eURL\u306f\u3053\u306e\u5f8c\u3059\u3050\u5229\u7528\u3059\u308b\u306e\u3067\u3001\u30b3\u30d4\u30fc\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<div data-sourcepos=\"243:1-245:3\" class=\"note warn\">\n<span class=\"fa fa-fw fa-exclamation-circle\"\/><\/p>\n<div>\n<p data-sourcepos=\"244:1-244:246\">\u3053\u306e\u6642\u70b9\u3067\u306f\u30a2\u30d7\u30ea\u304c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5f8c\u7d9a\u306e\u8a8d\u8a3c\u753b\u9762\u3092\u5b9f\u88c5\u305b\u305a\u306b\u9014\u4e2d\u3067\u3084\u3081\u3066\u3057\u307e\u3046\u3068\u3001\u4e0d\u7279\u5b9a\u591a\u6570\u306e\u4eba\u306b\u4f7f\u308f\u308c\u3066\u3057\u307e\u3046\u6050\u308c\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n<\/div>\n<h3 data-sourcepos=\"250:1-250:40\">\n<span id=\"\u30e6\u30fc\u30b6\u30fc\u30d7\u30fc\u30eb\u3092\u4f5c\u6210\u3059\u308b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%97%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B\"><i class=\"fa fa-link\"\/><\/a>\u30e6\u30fc\u30b6\u30fc\u30d7\u30fc\u30eb\u3092\u4f5c\u6210\u3059\u308b<\/h3>\n<p data-sourcepos=\"252:1-252:123\">Amazon Cognito\u306e\u30e1\u30cb\u30e5\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u300c5\u5206\u672a\u6e80\u3067\u7121\u6599\u3067\u958b\u59cb\u3067\u304d\u307e\u3059\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"254:1-254:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F6d62f51b-2d38-49ec-ac4c-8a3af138cdf0.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=bf12fa59abee777b863c0a3f3be10c00\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F6d62f51b-2d38-49ec-ac4c-8a3af138cdf0.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=bf12fa59abee777b863c0a3f3be10c00\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 17.07.32.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F6d62f51b-2d38-49ec-ac4c-8a3af138cdf0.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=1eb2a947a59362f739966427138d309a 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/6d62f51b-2d38-49ec-ac4c-8a3af138cdf0.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"256:1-256:51\">\u4ee5\u4e0b\u306e\u307f\u30c7\u30d5\u30a9\u30eb\u30c8\u304b\u3089\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<ul data-sourcepos=\"258:1-263:0\">\n<li data-sourcepos=\"258:1-258:77\">\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\uff1a <code>simple-streamlit-chatbot<\/code>\n<\/li>\n<li data-sourcepos=\"259:1-259:90\">\u30b5\u30a4\u30f3\u30a4\u30f3\u8b58\u5225\u5b50\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\uff1a \u300c\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u300d\u306b\u30c1\u30a7\u30c3\u30af<\/li>\n<li data-sourcepos=\"260:1-260:68\">\u30b5\u30a4\u30f3\u30a2\u30c3\u30d7\u306e\u305f\u3081\u306e\u5fc5\u9808\u5c5e\u6027\uff1a \u300cemail\u300d\u3092\u9078\u629e<\/li>\n<li data-sourcepos=\"261:1-263:0\">\u30ea\u30bf\u30fc\u30f3URL\uff1a \u4f5c\u3063\u305fECS\u30a2\u30d7\u30ea\u306e\u300c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3URL\u300d\uff0b <code>\/oauth2\/idpresponse<\/code> \u3092\u5165\u529b\uff08\u4f8b\uff1a <code>https:\/\/xxx.ecs.us-east-1.on.aws\/oauth2\/idpresponse<\/code>\uff09<\/li>\n<\/ul>\n<h3 data-sourcepos=\"264:1-264:38\">\n<span id=\"alb\u306bcognito\u8a8d\u8a3c\u3092\u8a2d\u5b9a\u3059\u308b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#alb%E3%81%ABcognito%E8%AA%8D%E8%A8%BC%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B\"><i class=\"fa fa-link\"\/><\/a>ALB\u306bCognito\u8a8d\u8a3c\u3092\u8a2d\u5b9a\u3059\u308b<\/h3>\n<p data-sourcepos=\"266:1-266:125\">ECS Express\u30e2\u30fc\u30c9\u3067\u4f5c\u6210\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u306e\u300c\u30ea\u30bd\u30fc\u30b9\u300d\u30bf\u30d6\u304b\u3089\u3001ALB\u30ea\u30b9\u30ca\u30fc\u3078\u30b8\u30e3\u30f3\u30d7\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"268:1-268:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F8428cb0d-8ed1-4190-acc2-b23369d35123.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=e48f1856742036ba2b9fcca033164d1d\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F8428cb0d-8ed1-4190-acc2-b23369d35123.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=e48f1856742036ba2b9fcca033164d1d\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 17.19.18.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F8428cb0d-8ed1-4190-acc2-b23369d35123.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=0b70971ff94e26df386b52aa72506dd8 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/8428cb0d-8ed1-4190-acc2-b23369d35123.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"270:1-270:97\">\u512a\u5148\u5ea6\u300c1\u300d\u306e\u30ea\u30b9\u30ca\u30fc\u30eb\u30fc\u30eb\u3092\u7de8\u96c6\u3057\u3066\u3001\u4ee5\u4e0b\u306e\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<ul data-sourcepos=\"272:1-277:0\">\n<li data-sourcepos=\"272:1-272:63\">\u4e8b\u524d\u30eb\u30fc\u30c6\u30a3\u30f3\u30a2\u30af\u30b7\u30e7\u30f3\uff1a \u30e6\u30fc\u30b6\u30fc\u3092\u8a8d\u8a3c<\/li>\n<li data-sourcepos=\"273:1-273:62\">\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\uff1a Amazon Cognito<\/li>\n<li data-sourcepos=\"274:1-274:59\">\u30e6\u30fc\u30b6\u30fc\u30d7\u30fc\u30ebID\uff1a \u3044\u307e\u4f5c\u3063\u305f\u3082\u306e\u3092\u9078\u629e<\/li>\n<li data-sourcepos=\"275:1-275:73\">\u30e6\u30fc\u30b6\u30fc\u30d7\u30fc\u30eb\u30af\u30e9\u30a4\u30a2\u30f3\u30c8ID\uff1a <code>simple-streamlit-chatbot<\/code>\n<\/li>\n<li data-sourcepos=\"276:1-277:0\">\u30bf\u30fc\u30b2\u30c3\u30c8\u30b0\u30eb\u30fc\u30d7\uff1a \u4e0a\u8a18\u3067\u78ba\u8a8d\u3057\u305f\u30bf\u30fc\u30b2\u30c3\u30c8\u30b0\u30eb\u30fc\u30d7\u540d<\/li>\n<\/ul>\n<p data-sourcepos=\"278:1-278:45\">\u5f8c\u306f\u305d\u306e\u307e\u307e\u9032\u3093\u3067\u4fdd\u5b58\u3057\u307e\u3059\u3002<\/p>\n<h3 data-sourcepos=\"281:1-281:49\">\n<span id=\"\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u3092\u4fee\u6b63\u3059\u308b\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E4%BF%AE%E6%AD%A3%E3%81%99%E3%82%8B\"><i class=\"fa fa-link\"\/><\/a>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u3092\u4fee\u6b63\u3059\u308b<\/h3>\n<p data-sourcepos=\"283:1-283:220\">\u8a8d\u8a3c\u5b8c\u4e86\u5f8c\u306b\u3001ALB\u7d4c\u7531\u3067Cognito\u306e\u8a8d\u8a3c\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306b\u30a2\u30a6\u30c8\u30d0\u30a6\u30f3\u30c9\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"285:1-286:107\">\u30ea\u30b9\u30ca\u30fc\u30eb\u30fc\u30eb\u4e0a\u90e8\u306e\u300c\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fc\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001ALB\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<br \/>\u305d\u306e\u5f8c\u3001\u300c\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u300d\u30bf\u30d6\u304b\u3089\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7ID\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n<p data-sourcepos=\"288:1-288:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F3815a8ad-ab1f-4076-861a-8063bf9a9f9f.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=e4b1b41d6da576a863d5c43a0280b057\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F3815a8ad-ab1f-4076-861a-8063bf9a9f9f.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=e4b1b41d6da576a863d5c43a0280b057\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 18.13.26.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F3815a8ad-ab1f-4076-861a-8063bf9a9f9f.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=bde0d214601e378629e6b33ee9a7a404 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/3815a8ad-ab1f-4076-861a-8063bf9a9f9f.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"290:1-291:81\">\u300c\u30a2\u30a6\u30c8\u30d0\u30a6\u30f3\u30c9\u30eb\u30fc\u30eb\u300d\u30bf\u30d6\u306b\u79fb\u52d5\u3057\u3001\u300c\u30a2\u30a6\u30c8\u30d0\u30a6\u30f3\u30c9\u306e\u30eb\u30fc\u30eb\u3092\u7de8\u96c6\u300d\u3057\u307e\u3059\u3002<br \/>\u300c\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u300d\u30dc\u30bf\u30f3\u304b\u3089\u3001\u4ee5\u4e0b\u306e\u30eb\u30fc\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<ul data-sourcepos=\"293:1-296:0\">\n<li data-sourcepos=\"293:1-293:20\">\u30bf\u30a4\u30d7\uff1a HTTPS<\/li>\n<li data-sourcepos=\"294:1-296:0\">\u9001\u4fe1\u5148\uff1a Anywhare-IPv4<\/li>\n<\/ul>\n<h3 data-sourcepos=\"297:1-297:16\">\n<span id=\"\u52d5\u4f5c\u78ba\u8a8d\" class=\"fragment\"\/><a target=\"_blank\" href=\"#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D\"><i class=\"fa fa-link\"\/><\/a>\u52d5\u4f5c\u78ba\u8a8d<\/h3>\n<p data-sourcepos=\"299:1-299:132\">\u3053\u308c\u3067\u3001\u300c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3URL\u300d\u304b\u3089Streamlit\u30a2\u30d7\u30ea\u306b\u8a8d\u8a3c\u3064\u304d\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff01<\/p>\n<p data-sourcepos=\"301:1-301:164\"><a target=\"_blank\" href=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F59e84236-27b5-4d5d-8db7-7c1202010d04.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=fc0774e8685562777366a50bd27c103a\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F59e84236-27b5-4d5d-8db7-7c1202010d04.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;s=fc0774e8685562777366a50bd27c103a\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2025-11-22 18.19.38.png\" srcset=\"https:\/\/qiita-user-contents.imgix.net\/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F1633856%2F59e84236-27b5-4d5d-8db7-7c1202010d04.png?ixlib=rb-4.0.0&amp;auto=format&amp;gif-q=60&amp;q=75&amp;w=1400&amp;fit=max&amp;s=5ddbc62df79e743cfa4af16efd8259c0 1x\" data-canonical-src=\"https:\/\/qiita-image-store.s3.ap-northeast-1.amazonaws.com\/0\/1633856\/59e84236-27b5-4d5d-8db7-7c1202010d04.png\" loading=\"lazy\"\/><\/a><\/p>\n<p data-sourcepos=\"303:1-303:39\">\u5b9f\u969b\u306b\u4f7f\u3063\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p data-sourcepos=\"305:1-305:65\"><iframe id=\"qiita-embed-content__e84c7c87aca9c03d106cc22d4c68a6bb\" src=\"https:\/\/qiita.com\/embed-contents\/link-card#qiita-embed-content__e84c7c87aca9c03d106cc22d4c68a6bb\" data-content=\"https%3A%2F%2Fsi-7fbc801b94ef42df9821b7feb4818eef.ecs.us-east-1.on.aws%2F\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\" style=\"width:100%;\" height=\"29\"><br \/>\n<\/iframe>\n<\/p>\n<p data-sourcepos=\"307:1-307:211\">\u30a2\u30d7\u30ea\u3092\u6d88\u3057\u305f\u3044\u3068\u304d\u306f\u3001\u30de\u30cd\u30b3\u30f3\u304b\u3089ECS\u30b5\u30fc\u30d3\u30b9\u3092\u524a\u9664\u3059\u308b\u3060\u3051\u3067\u3001Express\u30e2\u30fc\u30c9\u3067\u4f5c\u6210\u3055\u308c\u305f\u4e00\u9023\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u307e\u3068\u3081\u3066\u524a\u9664\u3057\u3066\u304f\u308c\u307e\u3059\u3002\u4fbf\u5229\u3067\u3059\u306d\uff01<\/p>\n<p data-sourcepos=\"312:1-312:154\">\u4eca\u56de\u306e\u624b\u9806\u3067ECS\u3068Cognito\u306b\u5165\u9580\u3067\u304d\u305f\u3089\u3001\u4ee5\u4e0b\u306e\u66f8\u7c4d\u3067\u3082\u3063\u3068\u4fbf\u5229\u306aAI\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u4f5c\u3063\u3066\u30c7\u30d7\u30ed\u30a4\u3057\u3066\u307f\u3088\u3046\ud83d\udcaa<\/p>\n<p data-sourcepos=\"314:1-314:39\"><iframe id=\"qiita-embed-content__753ff973bc6f263cd66888436a982cb4\" src=\"https:\/\/qiita.com\/embed-contents\/link-card#qiita-embed-content__753ff973bc6f263cd66888436a982cb4\" data-content=\"https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F4815636605%2F\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\" style=\"width:100%;\" height=\"29\"><br \/>\n<\/iframe>\n<\/p>\n<\/div>\n<p><script>!function(f,b,e,v,n,t,s)\n{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\nn.callMethod.apply(n,arguments):n.queue.push(arguments)};\nif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\nn.queue=[];t=b.createElement(e);t.async=!0;\nt.src=v;s=b.getElementsByTagName(e)[0];\ns.parentNode.insertBefore(t,s)}(window, document,'script',\n'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\nfbq('init', '305156090176370');\nfbq('trackSingle', '305156090176370', 'PageView');<\/script><br \/>\n<br \/>\n<br \/><a href=\"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"11\/22 20:40\u66f4\u65b0\uff1a Dockerfile\u3092\u66f4\u65b0\u3057\u5fd8\u308c\u3066\u3044\u305f\u305f\u3081\u53cd\u6620\u3057\u307e\u3057\u305f\ud83d\ude4f Amazon ECS\u306e\u65b0\u6a5f\u80fd\u300c\u30a8\u30af\u30b9\u30d7\u30ec\u30b9\u30e2\u30fc\u30c9\u300d\u304c\u767b\u5834\u3057\u307e\u3057\u305f\u3002 ECR\u306b\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3055\u3048\u30d7\u30c3\u30b7\u30e5\u3057\u3066\u304a\u3051\u3070\u3001\u9762\u5012\u306a\u30cd\u30c3\u30c8\u30ef\u30fc [&hellip;]","protected":false},"author":1,"featured_media":24800,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-24799","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hatena-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI - Qiita - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI - Qiita - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"11\/22 20:40\u66f4\u65b0\uff1a Dockerfile\u3092\u66f4\u65b0\u3057\u5fd8\u308c\u3066\u3044\u305f\u305f\u3081\u53cd\u6620\u3057\u307e\u3057\u305f\ud83d\ude4f Amazon ECS\u306e\u65b0\u6a5f\u80fd\u300c\u30a8\u30af\u30b9\u30d7\u30ec\u30b9\u30e2\u30fc\u30c9\u300d\u304c\u767b\u5834\u3057\u307e\u3057\u305f\u3002 ECR\u306b\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3055\u3048\u30d7\u30c3\u30b7\u30e5\u3057\u3066\u304a\u3051\u3070\u3001\u9762\u5012\u306a\u30cd\u30c3\u30c8\u30ef\u30fc [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-22T23:52:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/24799\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI &#8211; Qiita\",\"datePublished\":\"2025-11-22T23:52:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/24799\\\/\"},\"wordCount\":102,\"image\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"articleSection\":[\"\u306f\u3066\u306a\u30d6\u30ed\u30b0\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/24799\\\/\",\"url\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631\",\"name\":\"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI - Qiita - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"datePublished\":\"2025-11-22T23:52:28+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/qiita.com\\\/minorun365\\\/items\\\/7ad6c37eb8996e79d631#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI &#8211; Qiita\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI - Qiita - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631","og_locale":"ja_JP","og_type":"article","og_title":"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI - Qiita - \u30dd\u30b1\u30b3\u30f3","og_description":"11\/22 20:40\u66f4\u65b0\uff1a Dockerfile\u3092\u66f4\u65b0\u3057\u5fd8\u308c\u3066\u3044\u305f\u305f\u3081\u53cd\u6620\u3057\u307e\u3057\u305f\ud83d\ude4f Amazon ECS\u306e\u65b0\u6a5f\u80fd\u300c\u30a8\u30af\u30b9\u30d7\u30ec\u30b9\u30e2\u30fc\u30c9\u300d\u304c\u767b\u5834\u3057\u307e\u3057\u305f\u3002 ECR\u306b\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u3055\u3048\u30d7\u30c3\u30b7\u30e5\u3057\u3066\u304a\u3051\u3070\u3001\u9762\u5012\u306a\u30cd\u30c3\u30c8\u30ef\u30fc [&hellip;]","og_url":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-11-22T23:52:28+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","type":"image\/jpeg"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"2\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/24799\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI &#8211; Qiita","datePublished":"2025-11-22T23:52:28+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/24799\/"},"wordCount":102,"image":{"@id":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","articleSection":["\u306f\u3066\u306a\u30d6\u30ed\u30b0"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/24799\/","url":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631","name":"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI - Qiita - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631#primaryimage"},"image":{"@id":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","datePublished":"2025-11-22T23:52:28+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/11\/1763855548_https3A2F2Fqiita-user-contents.imgix_.net2Fhttps253A252F252Fcdn.qiita_.com252Fassets252Fpubli.jpeg","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/qiita.com\/minorun365\/items\/7ad6c37eb8996e79d631#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"ECS\u306e\u65b0\u6a5f\u80fdExpress\u30e2\u30fc\u30c9\u3067\u3001\u8a8d\u8a3c\u3064\u304dStreamlit\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306bAWS\u30c7\u30d7\u30ed\u30a4\u3057\u3088\u3046\uff01 #AI &#8211; Qiita"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/24799","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=24799"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/24799\/revisions"}],"predecessor-version":[{"id":24801,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/24799\/revisions\/24801"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/24800"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=24799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=24799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=24799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}