Help
RSS
API
Feed
Maltego
Contact
Domain > 9bo.hateblo.jp
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2017-11-16
54.92.23.30
(
ClassC
)
2026-01-29
3.175.34.17
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Thu, 29 Jan 2026 12:55:50 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://9bo.hateblo.jp/X-Cache: Redirect from cloudfrontVia: 1.1 223036c71c1f48562349a318eed11a5c.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: QAxcxX6r7sFDRbutLlEap6A7TsBBZH4XE9wD3KFQ6OlVBDu2_SigJQ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveServer: nginxDate: Thu, 29 Jan 2026 12:55:51 GMTCache-Control: privateX-Proxy-Revision: 290ad662750024ea17472b9c1b7e66a0f3e85678Vary: Accept-EncodingVary: X-Epic-Device-Type,X-Epic-Flag-Variants,Accept-EncodingAccess-Control-Allow-Origin: *Content-Security-Policy: frame-ancestors none; upgrade-insecure-requestsContent-Security-Policy-Report-Only: block-all-mixed-content; report-uri https://blog.hatena.ne.jp/api/csp_reportP3P: CPOTI CUR OUR BUS STAX-Cache-Only-Varnish: 1X-Content-Type-Options: nosniffX-Dispatch: Hatena::Epic::Web::Blogs::Index#indexX-Frame-Options: DENYX-Revision: 290ad662750024ea17472b9c1b7e66X-XSS-Protection: 1X-Runtime: 0.115465X-Varnish: 2453262 11051982Via: 1.1 ip-10-1-16-189.ap-northeast-1.compute.internal (Varnish/7.6), 1.1 6b0264d1694ae38286bac63d55b3986a.cloudfront.net (CloudFront)Strict-Transport-Security: max-age2592000;X-Cache: Miss from cloudfrontX-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: Z9aWQwV50lPXaf0mqgEDiPdqwhsHjYlyqBgPnT-oYJ3KqxWghUo6LAAge: 8722 !DOCTYPE html>html langjadata-admin-domain//blog.hatena.ne.jpdata-admin-originhttps://blog.hatena.ne.jpdata-authoru9bodata-avail-langsja endata-blog9bo.hateblo.jpdata-blog-host9bo.hateblo.jpdata-blog-is-public1data-blog-nameほのぼのぼのぼのdata-blog-owneru9bodata-blog-show-ads1data-blog-show-sleeping-ads1data-blog-urihttps://9bo.hateblo.jp/data-blog-uuid8454420450090976020data-blogs-uri-basehttps://9bo.hateblo.jpdata-brandhatenablogdata-data-layer{"hatenablog":{"admin":{},"analytics":{"brand_property_id":"","measurement_id":"","non_sampling_property_id":"","property_id":"UA-81195865-1","separated_property_id":"UA-29716941-18"},"blog":{"blog_id":"8454420450090976020","content_seems_japanese":"true","disable_ads":"","enable_ads":"true","enable_keyword_link":"true","entry_show_footer_related_entries":"true","force_pc_view":"false","is_public":"true","is_responsive_view":"false","is_sleeping":"true","lang":"ja","name":"\u307b\u306e\u307c\u306e\u307c\u306e\u307c\u306e","owner_name":"u9bo","uri":"https://9bo.hateblo.jp/"},"brand":"hatenablog","page_id":"index","permalink_entry":null,"pro":"free","router_type":"blogs"}}data-devicepcdata-dont-recommend-profalsedata-global-domainhttps://hatena.blogdata-globalheader-colorbdata-globalheader-typepcdata-has-touch-view1data-help-urlhttps://help.hatenablog.comdata-pageindexdata-parts-domainhttps://hatenablog-parts.comdata-plus-availabledata-profalsedata-router-typeblogsdata-sentry-dsnhttps://03a33e4781a24cf2885099fed222b56d@sentry.io/1195218data-sentry-environmentproductiondata-sentry-sample-rate0.1data-static-domainhttps://cdn.blog.st-hatena.comdata-version290ad662750024ea17472b9c1b7e66 data-initial-state{} > head prefixog: http://ogp.me/ns# fb: http://ogp.me/ns/fb#> meta nameviewport contentwidthdevice-width, initial-scale1.0 /> meta namerobots contentmax-image-preview:large /> meta charsetutf-8/> meta http-equivX-UA-Compatible contentIE7; IE9; IE10; IE11 /> title>ほのぼのぼのぼの/title> link relcanonical hrefhttps://9bo.hateblo.jp//> meta itempropname contentほのぼのぼのぼの/> meta itempropimage contenthttps://cdn.blog.st-hatena.com/images/theme/og-image-1500.png/> meta propertyog:title contentほのぼのぼのぼの/>meta propertyog:type contentblog/> meta propertyog:url contenthttps://9bo.hateblo.jp//> meta propertyog:image contenthttps://cdn.blog.st-hatena.com/images/theme/og-image-1500.png/>meta propertyog:image:alt contentほのぼのぼのぼの/> meta propertyog:description content忘れないようにメモ />meta propertyog:site_name contentほのぼのぼのぼの/> meta nametwitter:card contentsummary_large_image /> meta nametwitter:image contenthttps://cdn.blog.st-hatena.com/images/theme/og-image-1500.png /> meta nametwitter:title contentほのぼのぼのぼの /> meta nametwitter:description content忘れないようにメモ /> meta nametwitter:app:name:iphone contentはてなブログアプリ /> meta nametwitter:app:id:iphone content583299321 /> meta nametwitter:app:url:iphone contenthatenablog:///open?urihttps%3A%2F%2F9bo.hateblo.jp%2F /> meta namedescription content忘れないようにメモ /> meta namegoogle-site-verification content79GDbjja7LfSmjb4S0VgOG_D-cpyqn0-_rXDILkBhjs /> script idembed-gtm-data-layer-loader data-data-layer-page-specific>(function() { function loadDataLayer(elem, attrName) { if (!elem) { return {}; } var json elem.getAttribute(attrName); if (!json) { return {}; } return JSON.parse(json); } var globalVariables loadDataLayer( document.documentElement, data-data-layer ); var pageSpecificVariables loadDataLayer( document.getElementById(embed-gtm-data-layer-loader), data-data-layer-page-specific ); var variables globalVariables, pageSpecificVariables; if (!window.dataLayer) { window.dataLayer ; } for (var i 0; i variables.length; i++) { window.dataLayer.push(variablesi); }})();/script>!-- Google Tag Manager -->script>(function(w,d,s,l,i){wlwl||;wl.push({gtm.start:new Date().getTime(),event:gtm.js});var fd.getElementsByTagName(s)0,jd.createElement(s),dll!dataLayer?&l+l:;j.asynctrue;j.srchttps://www.googletagmanager.com/gtm.js?id+i+dl;f.parentNode.insertBefore(j,f);})(window,document,script,dataLayer,GTM-P4CXTW);/script>!-- End Google Tag Manager --> link relshortcut icon hrefhttps://9bo.hateblo.jp/icon/favicon>link relapple-touch-icon hrefhttps://9bo.hateblo.jp/icon/touch>link relicon sizes192x192 hrefhttps://9bo.hateblo.jp/icon/link> link relalternate typeapplication/atom+xml titleAtom hrefhttps://9bo.hateblo.jp/feed/>link relalternate typeapplication/rss+xml titleRSS2.0 hrefhttps://9bo.hateblo.jp/rss/> link relauthor hrefhttp://www.hatena.ne.jp/u9bo/> link relstylesheet typetext/css hrefhttps://cdn.blog.st-hatena.com/css/blog.css?version290ad662750024ea17472b9c1b7e66/> link relstylesheet typetext/css hrefhttps://usercss.blog.st-hatena.com/blog_style/8454420450090976020/9b28e4b8abba5ac943294a24eebe10ee1770db82/> script> /script> style> div#google_afc_user, div.google-afc-user-container, div.google_afc_image, div.google_afc_blocklink { display: block !important; }/style> script srchttps://cdn.pool.st-hatena.com/valve/valve.js async>/script>script idtest-valve-definition> var valve window.valve || ; valve.push(function(v) { v.config({ service: blog, content: { result: adtrust, documentIds: blog:entry:26006613688686803 } }); v.defineDFPSlot({sizes:300,250,336,280,slotId:google_afc_user_container_0,unit:/4374287/blo_pc_com_6_3328_0_no}); v.defineDFPSlot({lazy:1,sizes:{mappings:320,568,336,280,300,250,fluid,0,0,300,250},slotId:sleeping-ad-in-entry,unit:/4374287/blog_pc_entry_sleep_in-article}); v.defineDFPSlot({lazy:,sizes:300,250,336,280,468,60,fluid,slotId:google_afc_user_container_1,unit:/4374287/blog_user}); v.sealDFPSlots(); });/script> script typeapplication/ld+json>{@context:https://schema.org,@type:WebSite,name:ほのぼのぼのぼの,url:https://9bo.hateblo.jp/}/script> meta namepocket-site-verification contentfc1605b777c5188fcd740918fcc647 /> /head> body classpage-index globalheader-ng-enabled> div idglobalheader-container data-brandhatenablog > iframe idglobalheader height37 frameborder0 allowTransparencytrue>/iframe>/div> nav class blog-controlls > div classblog-controlls-blog-icon> a hrefhttps://9bo.hateblo.jp/> img srchttps://cdn.blog.st-hatena.com/images/admin/blog-icon-noimage.png altほのぼのぼのぼの/> /a> /div> div classblog-controlls-title> a hrefhttps://9bo.hateblo.jp/>ほのぼのぼのぼの/a> /div> a hrefhttps://blog.hatena.ne.jp/u9bo/9bo.hateblo.jp/subscribe?utm_mediumbutton&utm_campaignsubscribe_blog&utm_sourceblogs_topright_button classblog-controlls-subscribe-btn test-blog-header-controlls-subscribe> 読者になる /a> /nav> div idcontainer> div idcontainer-inner> header idblog-title data-brandhatenablog> div idblog-title-inner > div idblog-title-content> h1 idtitle>a hrefhttps://9bo.hateblo.jp/>ほのぼのぼのぼの/a>/h1> /div> /div>/header> div idcontent classhfeed > div idcontent-inner> div idwrapper> div idmain> div idmain-inner> article classentry no-entry sleeping-ads styledisplay: block !important;> div classentry-inner> div classentry-content> div classvariable-mobileWeb-ad> div idgoogle_afc_user_container_0 classsleeping-ad styledisplay: block !important;>/div> /div> p classsleeping-ads-notice styledisplay: none;>この広告は、90日以上更新していないブログに表示しています。/p> /div> /div> /article> !-- google_ad_section_start --> !-- rakuten_ad_target_begin --> article classentry hentry test-hentry js-entry-article date-first autopagerize_page_element chars-12000 words-1200 mode-markdown entry-odd identry-26006613688686803 data-keyword-campaign data-uuid26006613688686803 data-publication-typeentry> div classentry-inner> header classentry-header> div classdate entry-date first> a hrefhttps://9bo.hateblo.jp/archive/2021/02/07 relnofollow> time datetime2021-02-07T14:36:11Z title2021-02-07T14:36:11Z> span classdate-year>2021/span>span classhyphen>-/span>span classdate-month>02/span>span classhyphen>-/span>span classdate-day>07/span> /time> /a> /div> h1 classentry-title> a hrefhttps://9bo.hateblo.jp/entry/2021/02/07/233611 classentry-title-link bookmark>AWS SAM でサーバレスアプリケーション(WebAPI)を動かす/a>/h1> /header> div classentry-content hatenablog-entry> p>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> SAM(Serverless Application Model)は、Lambdaやa classkeyword hrefhttp://d.hatena.ne.jp/keyword/API>API/a> a classkeyword hrefhttp://d.hatena.ne.jp/keyword/Gateway>Gateway/a>などのa classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a>のサービスを使ったサーバレスアプリケーションを構築可能なa classkeyword hrefhttp://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF>フレームワーク/a>です。/p>p>今回は SAM を使って、サンプルアプリケーションを動かしてみます。/p>h2>事前準備/h2>p>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> a classkeyword hrefhttp://d.hatena.ne.jp/keyword/CLI>CLI/a>, a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> SAM a classkeyword hrefhttp://d.hatena.ne.jp/keyword/CLI>CLI/a>, Node.js のインストールを済ませます。br />a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> a classkeyword hrefhttp://d.hatena.ne.jp/keyword/CLI>CLI/a> は code>aws configure/code> などを実行し初期設定を済ませておきます。/p>ul>li>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> Command Line Interfaceul>li>a hrefhttps://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html>https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html/a>/li>/ul>/li>li>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> Serverless Application Modelul>li>a hrefhttps://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html>https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html/a>/li>/ul>/li>/ul>pre classcode bash data-langbash data-unlink>% aws --versionaws-cli/2.1.23 Python/3.9.1 Darwin/19.6.0 source/x86_64 prompt/off% sam --versionSAM CLI, version 1.17.0% node --versionv14.15.4/pre>h2>アプリケーションの作成/h2>p>code>sam init/code> でアプリケーションを作成します。/p>pre classcode bash data-langbash data-unlink>% sam initWhich template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template LocationChoice: 1What package type would you like to use? 1 - Zip (artifact is a zip uploaded to S3) 2 - Image (artifact is an image uploaded to an ECR image repository)Package type: 1Which runtime would you like to use? 1 - nodejs14.x 2 - python3.8 3 - ruby2.7 4 - go1.x 5 - java11 6 - dotnetcore3.1 7 - nodejs12.x 8 - nodejs10.x 9 - python3.7 10 - python3.6 11 - python2.7 12 - ruby2.5 13 - java8.al2 14 - java8 15 - dotnetcore2.1Runtime: 1Project name sam-app: sam-hello-appCloning app templates from https://github.com/aws/aws-sam-cli-app-templatesAWS quick start application templates: 1 - Hello World Example 2 - Step Functions Sample App (Stock Trader) 3 - Quick Start: From Scratch 4 - Quick Start: Scheduled Events 5 - Quick Start: S3 6 - Quick Start: SNS 7 - Quick Start: SQS 8 - Quick Start: Web BackendTemplate selection: 1 ----------------------- Generating application: ----------------------- Name: sam-hello-app Runtime: nodejs14.x Dependency Manager: npm Application Template: hello-world Output Directory: . Next steps can be found in the README file at ./sam-hello-app/README.md/pre>p>次の構造のアプリケーションが作成されます。/p>pre classcode data-lang data-unlink>sam-hello-app├── README.md├── events│ └── event.json├── hello-world│ ├── app.js│ ├── package.json│ └── tests│ └── unit│ └── test-handler.js└── template.yaml/pre>p>基本的には code>template.yaml/code> にアプリケーションの構成を、code>hello-world/app.js/code> に実際の処理(Lambda関数の実装)をします。/p>p>code>template.yaml/code> は次の内容です(ここではテンプレートのrepositoryを参照しています)。br />code>Resources/code> のセクションに必要なリソース(例えば、Lambda、a classkeyword hrefhttp://d.hatena.ne.jp/keyword/API>API/a> a classkeyword hrefhttp://d.hatena.ne.jp/keyword/Gateway>Gateway/a>、S3やDynamoDB)を記述していきます。br />今回は、Lambda関数としてcode>HelloWorldFunction/code>が、Lambda関数をa classkeyword hrefhttp://d.hatena.ne.jp/keyword/API>API/a>として利用できるようa classkeyword hrefhttp://d.hatena.ne.jp/keyword/API>API/a> a classkeyword hrefhttp://d.hatena.ne.jp/keyword/Gateway>Gateway/a>としてcode>HelloWorldApi/code>が定義されています。/p>script srchttps://gist-it.appspot.com/http://github.com/aws/aws-sam-cli-app-templates/blob/master/nodejs14.x/cookiecutter-aws-sam-hello-nodejs/%7B%7Bcookiecutter.project_name%7D%7D/template.yaml>/script>p>また、code>hello-world/app.js/code> は次のとおりです。/p>script srchttps://gist-it.appspot.com/http://github.com/aws/aws-sam-cli-app-templates/blob/master/nodejs14.x/cookiecutter-aws-sam-hello-nodejs/%7B%7Bcookiecutter.project_name%7D%7D/hello-world/app.js>/script>h2>ローカル環境での動作確認/h2>p>まずは手元のPC上で動作確認してみましょう。/p>h3>npm install/h3>p>Lambda 関数は、a classkeyword hrefhttp://d.hatena.ne.jp/keyword/Amazon>Amazon/a> a classkeyword hrefhttp://d.hatena.ne.jp/keyword/Linux>Linux/a> 上で実行されます。a classkeyword hrefhttp://d.hatena.ne.jp/keyword/macOS>macOS/a>などの異なる環境上で npm install を行うとパッケージによっては動作しないことがあります。そこで次のようにプラットフォームを指定して npm install を行います。/p>pre classcode bash data-langbash data-unlink>% cd hello-world% npm install --archx64 --platformlinux/pre>p>iframe srchttps://hatenablog-parts.com/embed?urlhttps%3A%2F%2Fdev.classmethod.jp%2Farticles%2Fhow-to-deploy-with-native-module%2F titleAWS Lambda(Node.js)にsharp(Native Module)をデプロイする方法 | DevelopersIO classembed-card embed-webcard scrollingno frameborder0 styledisplay: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;>/iframe>cite classhatena-citation>a hrefhttps://dev.classmethod.jp/articles/how-to-deploy-with-native-module/>dev.classmethod.jp/a>/cite>/p>h3>起動(code>sam local start-api/code>)/h3>p>code>sam local start-api/code> で Lambda 関数をホストするローカルの HTTP サーバが起動します。/p>pre classcode data-lang data-unlink>% cd ..% sam local start-api # template.yaml と同じ階層に移動 Mounting HelloWorldFunction at http://127.0.0.1:3000/hello GETYou can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. You only need to restart SAM CLI if you update your AWS SAM template2021-02-07 22:20:50 * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)/pre>p>iframe srchttps://hatenablog-parts.com/embed?urlhttps%3A%2F%2Fdocs.aws.amazon.com%2Fja_jp%2Fserverless-application-model%2Flatest%2Fdeveloperguide%2Fsam-cli-command-reference-sam-local-start-api.html titlesam local start-api - AWS Serverless Application Model classembed-card embed-webcard scrollingno frameborder0 styledisplay: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;>/iframe>cite classhatena-citation>a hrefhttps://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-local-start-api.html>docs.aws.amazon.com/a>/cite>/p>h3>動作確認/h3>p>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/curl>curl/a> を使って先ほど起動したHTTPサーバにアクセスしてみます。/p>pre classcode data-lang data-unlink>% curl http://127.0.0.1:3000/hello{"message":"hello world"}/pre>p>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/API>API/a>としてLambda関数を実行することができました。/p>h3>Lambda関数の実装を変更してみましょう/h3>p>code>sam local start-api/code> はホットリロードに対応しています。br />したがって、Lambda 関数の実装を変更した場合でも、HTTPサーバを再起動せず(code>sam local start-api/code>を再実行せずに)、変更が反映されます。/p>p>Lambda関数の実装 code>hello-world/app.js/code> の実装を変更して表示されるメッセージを変更してみましょう。/p>pre classcode lang-javascript data-langjavascript data-unlink>response span classsynIdentifier>{/span> span classsynConstant>statusCode/span>: 200, span classsynConstant>body/span>: JSON.stringify(span classsynIdentifier>{/span> message: span classsynConstant>EZ DO DANCE/span>, span classsynComment>// こちらを変更/span> span classsynComment>// location: ret.data.trim()/span> span classsynIdentifier>}/span>)/pre>p>では、先ほどと同様に a classkeyword hrefhttp://d.hatena.ne.jp/keyword/curl>curl/a> でアクセスしてみます。/p>pre classcode data-lang data-unlink>% curl http://127.0.0.1:3000/hello{"message":"EZ DO DANCE"}/pre>p>表示内容が変更されました!/p>p>実際の開発の際は、ローカルサーバを起動したままLambda関数の実装を変更し動作確認する流れになりそうです(とても便利ですね)。/p>h2>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a>環境へデプロイする(code>sam build/code>とcode>sam deploy/code>)/h2>p>ローカル環境での動作確認が済んだので、実際にa classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a>環境へデプロイしてみましょう。/p>h3>ビルドとデプロイ/h3>p>code>sam build/code> は code>--use-container/code> を指定すると実際の動作環境に近い Docker コンテナ上でビルドを行うことができます。/p>p>code>sam deploy/code> は code>--guided/code> を指定するとデプロイに関わる設定を行いながらデプロイが行えます。/p>pre classcode data-lang data-unlink># アプリケーションのビルド% sam build --use-containerStarting Build inside a containerBuilding codeuri: hello-world/ runtime: nodejs14.x metadata: {} functions: 'HelloWorldFunction'Fetching amazon/aws-sam-cli-build-image-nodejs14.x Docker container image......Mounting /Users/yutokubo/projects/sam-hello-app/hello-world as /tmp/samcli/source:ro,delegated inside runtime containerBuild SucceededBuilt Artifacts : .aws-sam/buildBuilt Template : .aws-sam/build/template.yamlCommands you can use next* Invoke Function: sam local invoke* Deploy: sam deploy --guidedRunning NodejsNpmBuilder:NpmPackRunning NodejsNpmBuilder:CopyNpmrcRunning NodejsNpmBuilder:CopySourceRunning NodejsNpmBuilder:NpmInstallRunning NodejsNpmBuilder:CleanUpNpmrc/pre>pre classcode data-lang data-unlink># デプロイ% sam deploy --guidedConfiguring SAM deploy Looking for config file samconfig.toml : Not found Setting default arguments for 'sam deploy' Stack Name sam-app: sam-hello-app AWS Region ap-northeast-1: #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy y/N: y #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation Y/n: y HelloWorldFunction may not have authorization defined, Is this okay? y/N: y Save arguments to configuration file Y/n: y SAM configuration file samconfig.toml: SAM configuration environment default: Looking for resources needed for deployment: Not found. Creating the required resources... Successfully created! Managed S3 bucket: aws-sam-cli-managed-default-samclisourcebucket-xxxxxx A different default S3 bucket can be set in samconfig.toml Saved arguments to config file Running 'sam deploy' for future deployments will use the parameters saved above. The above parameters can be changed by modifying samconfig.toml Learn more about samconfig.toml syntax at https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.htmlUploading to sam-hello-app/6d165a6f8e6b1f14d69a5f59807a9541 121586 / 121586.0 (100.00%) Deploying with following values Stack name : sam-hello-app Region : ap-northeast-1 Confirm changeset : True Deployment s3 bucket : aws-sam-cli-managed-default-samclisourcebucket-xxxxxx Capabilities : "CAPABILITY_IAM" Parameter overrides : {} Signing Profiles : {}Initiating deploymentHelloWorldFunction may not have authorization defined.Uploading to sam-hello-app/a9c5be03ba9e86b1f09de6c10ede13d7.template 1108 / 1108.0 (100.00%)Waiting for changeset to be created..CloudFormation stack changeset-------------------------------------------------------------------------------------------------Operation LogicalResourceId ResourceType Replacement -------------------------------------------------------------------------------------------------+ Add HelloWorldFunctionHell AWS::Lambda::Permissio N/A oWorldPermissionProd n + Add HelloWorldFunctionRole AWS::IAM::Role N/A + Add HelloWorldFunction AWS::Lambda::Function N/A + Add ServerlessRestApiDeplo AWS::ApiGateway::Deplo N/A yment0000000000 yment + Add ServerlessRestApiProdS AWS::ApiGateway::Stage N/A tage + Add ServerlessRestApi AWS::ApiGateway::RestA N/A pi -------------------------------------------------------------------------------------------------Changeset created successfully. arn:aws:cloudformation:ap-northeast-1:000000:changeSet/samcli-deploy000000/9db63ba3-ddf4-4c2c-9af0-095e65510000Previewing CloudFormation changeset before deploymentDeploy this changeset? y/N: y2021-02-07 22:51:42 - Waiting for stack create/update to completeCloudFormation events from changeset-------------------------------------------------------------------------------------------------ResourceStatus ResourceType LogicalResourceId ResourceStatusReason -------------------------------------------------------------------------------------------------CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole - CREATE_IN_PROGRESS AWS::IAM::Role HelloWorldFunctionRole Resource creation Initiated CREATE_COMPLETE AWS::IAM::Role HelloWorldFunctionRole - CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction - CREATE_IN_PROGRESS AWS::Lambda::Function HelloWorldFunction Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Function HelloWorldFunction - CREATE_IN_PROGRESS AWS::ApiGateway::RestA ServerlessRestApi - pi CREATE_IN_PROGRESS AWS::ApiGateway::RestA ServerlessRestApi Resource creation pi Initiated CREATE_COMPLETE AWS::ApiGateway::RestA ServerlessRestApi - pi CREATE_IN_PROGRESS AWS::ApiGateway::Deplo ServerlessRestApiDeplo - yment yment47fc2d5f9d CREATE_IN_PROGRESS AWS::ApiGateway::Deplo ServerlessRestApiDeplo Resource creation yment yment47fc2d5f9d Initiated CREATE_IN_PROGRESS AWS::Lambda::Permissio HelloWorldFunctionHell Resource creation n oWorldPermissionProd Initiated CREATE_IN_PROGRESS AWS::Lambda::Permissio HelloWorldFunctionHell - n oWorldPermissionProd CREATE_COMPLETE AWS::ApiGateway::Deplo ServerlessRestApiDeplo - yment yment47fc2d5f9d CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdS - tage CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdS Resource creation tage Initiated CREATE_COMPLETE AWS::ApiGateway::Stage ServerlessRestApiProdS - tage CREATE_COMPLETE AWS::Lambda::Permissio HelloWorldFunctionHell - n oWorldPermissionProd CREATE_COMPLETE AWS::CloudFormation::S sam-hello-app - tack -------------------------------------------------------------------------------------------------CloudFormation outputs from deployed stack-------------------------------------------------------------------------------------------------Outputs -------------------------------------------------------------------------------------------------Key HelloWorldFunctionIamRole Description Implicit IAM Role created for Hello World function Value arn:aws:iam::0000000:role/sam-hello-app-HelloWorldFunctionRole- BVZKC3SFRLYW Key HelloWorldApi Description API Gateway endpoint URL for Prod stage for Hello World function Value https://6xcmvqyqw4.execute-api.ap-northeast-1.amazonaws.com/Prod/hello/ Key HelloWorldFunction Description Hello World Lambda Function ARN Value arn:aws:lambda:ap-northeast-1:0000000:function:sam-hello-app- HelloWorldFunction-00000000 -------------------------------------------------------------------------------------------------Successfully created/updated stack - sam-hello-app in ap-northeast-1/pre>p>code>sam deploy/code> を実行すると、CloudFormationを使ってデプロイや実行に必要な IAM role、リソースとしてLambdaやa classkeyword hrefhttp://d.hatena.ne.jp/keyword/API>API/a> a classkeyword hrefhttp://d.hatena.ne.jp/keyword/Gateway>Gateway/a>が追加されます。/p>p>また、今回指定した設定内容は code>samconfig.toml/code> に保存されています。br />次回以降のデプロイは code>--guided/code> を指定せず code>sam deploy/code> で実行可能です。/p>pre classcode 2回目以降のデプロイ data-lang2回目以降のデプロイ data-unlink>% sam deploy/pre>h3>動作確認/h3>p>では動作確認してみましょう。/p>pre classcode bash data-langbash data-unlink>% curl https://6xcmvqyqw4.execute-api.ap-northeast-1.amazonaws.com/Prod/hello/{"message":"EZ DO DANCE"}% /pre>p>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a>環境でも動作できることを確認できました!(とても簡単ですね!)/p>h2>備考: code>sam local start-api/code> でホットリロードが有効にならないケース/h2>p>code>sam build/code> を行った後に code>sam local start-api/code> を実行すると、ホットリロードが利用できずLambda関数の変更が反映されないことがことがあります。 br />これは、code>sam local start-api/code> では code>sam build/code> の出力結果である code>.aws-sam/code> 配下のプログラムが優先されることのようです。/p>p>この場合は、code>.aws-sam/code> を削除してから code>sam local start-api/code> を実行します。/p>pre classcode bash data-langbash data-unlink>% rm -rf .aws-sam% sam local start-api/pre>p>iframe srchttps://hatenablog-parts.com/embed?urlhttps%3A%2F%2Fqiita.com%2Fjacoyutorius%2Fitems%2F416cc3dc2ff7bd8b98a1 titleAWS SAM CLI + Ruby のローカル開発時にホットリローディングされない件 - Qiita classembed-card embed-webcard scrollingno frameborder0 styledisplay: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;>/iframe>cite classhatena-citation>a hrefhttps://qiita.com/jacoyutorius/items/416cc3dc2ff7bd8b98a1>qiita.com/a>/cite>/p>h2>終わりに/h2>p>今回は、a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> SAM を使って、サーバレスアプリケーションを動作させてみました。/p>p>SAM a classkeyword hrefhttp://d.hatena.ne.jp/keyword/CLI>CLI/a> を使うことでローカル環境での動作確認が可能なこと、a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a>コンソールをポチポチすることなくデプロイまで実施できることを確認しました。br />特に、各種デプロイやリソースがCloudFormationで管理されることで、開発環境や本番環境など複数の環境が存在する場合でも容易に環境構築やリリースが可能になりそうです。/p>p>次は、より実践的なWebAPIを開発してみようと思います。/p>h2>参考文献/h2>ul>li>a classkeyword hrefhttp://d.hatena.ne.jp/keyword/AWS>AWS/a> SAM a classkeyword hrefhttp://d.hatena.ne.jp/keyword/CLI>CLI/a> 再入門 2020.07ul>li>a hrefhttps://qiita.com/hayao_k/items/7827c3778a23c514e196>https://qiita.com/hayao_k/items/7827c3778a23c514e196/a>/li>/ul>/li>li>イチから理解するサーバーレスアプリケーション開発 サーバーレス開発環境とテストul>li>a hrefhttps://pages.awscloud.com/rs/112-TZM-766/images/20200827_serverless_session2.pdf>https://pages.awscloud.com/rs/112-TZM-766/images/20200827_serverless_session2.pdf/a>/li>/ul>/li>/ul> /div> footer classentry-footer> div classentry-tags-wrapper> div classentry-tags> /div>/div> p classentry-footer-section track-inview-by-gtm data-gtm-track-json{"area": "finish_reading"}> span classauthor vcard>span classfn data-load-nickname1 data-user-nameu9bo >u9bo/span>/span> span classentry-footer-time>a hrefhttps://9bo.hateblo.jp/entry/2021/02/07/233611>time data-relative datetime2021-02-07T14:36:11Z title2021-02-07T14:36:11Z classupdated>2021-02-07 23:36/time>/a>/span> span class entry-footer-subscribe data-test-blog-controlls-subscribe> a hrefhttps://blog.hatena.ne.jp/u9bo/9bo.hateblo.jp/subscribe?utm_campaignsubscribe_blog&utm_mediumbutton&utm_sourceblogs_entry_footer> 読者になる /a> /span> /p> div classhatena-star-container data-hatena-star-container data-hatena-star-urlhttps://9bo.hateblo.jp/entry/2021/02/07/233611 data-hatena-star-titleAWS SAM でサーバレスアプリケーション(WebAPI)を動かす data-hatena-star-variantprofile-icon data-hatena-star-profile-url-templatehttps://blog.hatena.ne.jp/{username}/ >/div> div classsocial-buttons> div classsocial-button-item> a hrefhttps://b.hatena.ne.jp/entry/s/9bo.hateblo.jp/entry/2021/02/07/233611 classhatena-bookmark-button data-hatena-bookmark-urlhttps://9bo.hateblo.jp/entry/2021/02/07/233611 data-hatena-bookmark-layoutvertical-balloon data-hatena-bookmark-langja titleこの記事をはてなブックマークに追加>img srchttps://b.st-hatena.com/images/entry-button/button-only.gif altこの記事をはてなブックマークに追加 width20 height20 styleborder: none; />/a> /div> div classsocial-button-item> div classfb-share-button data-layoutbox_count data-hrefhttps://9bo.hateblo.jp/entry/2021/02/07/233611>/div> /div> div classsocial-button-item> a classentry-share-button entry-share-button-twitter test-share-button-twitter hrefhttps://x.com/intent/tweet?textAWS+SAM+%E3%81%A7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%AC%E3%82%B9%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%EF%BC%88WebAPI%EF%BC%89%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99+-+%E3%81%BB%E3%81%AE%E3%81%BC%E3%81%AE%E3%81%BC%E3%81%AE%E3%81%BC%E3%81%AE&urlhttps%3A%2F%2F9bo.hateblo.jp%2Fentry%2F2021%2F02%2F07%2F233611 titleX(Twitter)で投稿する >/a> /div> /div> div classgoogle-afc-image test-google-rectangle-ads> div idgoogle_afc_user_container_1 classgoogle-afc-user-container google_afc_blocklink2_5 google_afc_boder data-test-unit/4374287/blog_user>/div> a hrefhttp://blog.hatena.ne.jp/guide/pro classopen-pro-modal data-guide-pro-modal-ad-urlhttps://hatena.blog/guide/pro/modal/ad>広告を非表示にする/a> /div> div classcustomized-footer> /div> div classcomment-box js-comment-box> ul classcomment js-comment> li classread-more-comments styledisplay: none;>a>もっと読む/a>/li> /ul> a classleave-comment-title js-leave-comment-title>コメントを書く/a> /div> /footer> /div>/article> !-- rakuten_ad_target_end --> !-- google_ad_section_end --> div classpager autopagerize_insert_before> span classpager-next> a hrefhttps://9bo.hateblo.jp/?page1612708571 relnext>次のページ/a> /span> /div> /div> /div> aside idbox1> div idbox1-inner> /div>/aside> /div>!-- #wrapper --> aside idbox2> div idbox2-inner> div classhatena-module hatena-module-profile> div classhatena-module-title> プロフィール /div> div classhatena-module-body> a hrefhttps://9bo.hateblo.jp/about classprofile-icon-link> img srchttps://cdn.profile-image.st-hatena.com/users/u9bo/profile.png altid:u9bo classprofile-icon /> /a> span classid> a hrefhttps://9bo.hateblo.jp/about classhatena-id-link>span data-load-nickname1 data-user-nameu9bo>id:u9bo/span>/a> /span> div classhatena-follow-button-box btn-subscribe js-hatena-follow-button-box > a href# classhatena-follow-button js-hatena-follow-button> span classsubscribing> span classforeground>読者です/span> span classbackground>読者をやめる/span> /span> span classunsubscribing data-track-nameprofile-widget-subscribe-button data-track-once> span classforeground>読者になる/span> span classbackground>読者になる/span> /span> /a> div classsubscription-count-box js-subscription-count-box> i>/i> u>/u> span classsubscription-count js-subscription-count> /span> /div>/div> div classprofile-about> a hrefhttps://9bo.hateblo.jp/about>このブログについて/a> /div> /div>/div> div classhatena-module hatena-module-recent-entries > div classhatena-module-title> a hrefhttps://9bo.hateblo.jp/archive> 最新記事 /a> /div> div classhatena-module-body> ul classrecent-entries hatena-urllist > li classurllist-item recent-entries-item> div classurllist-item-inner recent-entries-item-inner> a hrefhttps://9bo.hateblo.jp/entry/2021/02/07/233611 classurllist-title-link recent-entries-title-link urllist-title recent-entries-title>AWS SAM でサーバレスアプリケーション(WebAPI)を動かす/a> /div> /li> li classurllist-item recent-entries-item> div classurllist-item-inner recent-entries-item-inner> a hrefhttps://9bo.hateblo.jp/entry/2020/09/09/123000 classurllist-title-link recent-entries-title-link urllist-title recent-entries-title>rsync でデータ移行したときのメモ(macOS)/a> /div> /li> li classurllist-item recent-entries-item> div classurllist-item-inner recent-entries-item-inner> a hrefhttps://9bo.hateblo.jp/entry/2020/02/10/183450 classurllist-title-link recent-entries-title-link urllist-title recent-entries-title>PHP 7.0 な環境でも PECL で Xdebug をインストールしたい/a> /div> /li> li classurllist-item recent-entries-item> div classurllist-item-inner recent-entries-item-inner> a hrefhttps://9bo.hateblo.jp/entry/2019/10/14/135607 classurllist-title-link recent-entries-title-link urllist-title recent-entries-title>GitLabCIでリンクチェックを日常的に行なう/a> /div> /li> li classurllist-item recent-entries-item> div classurllist-item-inner recent-entries-item-inner> a hrefhttps://9bo.hateblo.jp/entry/2019/09/15/010647 classurllist-title-link recent-entries-title-link urllist-title recent-entries-title>GitLab CI のパイプラインで処理した内容をコミットしたい/a> /div> /li> /ul> /div>/div> div classhatena-module hatena-module-entries-access-ranking data-count5 data-sourceaccess data-enable_customize_format0 data-display_entry_image_size_width100 data-display_entry_image_size_height100 data-display_entry_category0 data-display_entry_image0 data-display_entry_image_size_width100 data-display_entry_image_size_height100 data-display_entry_body_length0 data-display_entry_date0 data-display_entry_title_length20 data-restrict_entry_title_length0 data-display_bookmark_count0> div classhatena-module-title> 注目記事 /div> div classhatena-module-body> /div>/div> div classhatena-module hatena-module-search-box> div classhatena-module-title> 検索 /div> div classhatena-module-body> form classsearch-form rolesearch actionhttps://9bo.hateblo.jp/search methodget> input typetext nameq classsearch-module-input value placeholder記事を検索 required> input typesubmit value検索 classsearch-module-button />/form> /div>/div> div classhatena-module hatena-module-archive data-archive-typedefault data-archive-urlhttps://9bo.hateblo.jp/archive> div classhatena-module-title> a hrefhttps://9bo.hateblo.jp/archive>月別アーカイブ/a> /div> div classhatena-module-body> ul classhatena-urllist> li classarchive-module-year archive-module-year-hidden data-year2021> div classarchive-module-button> span classarchive-module-hide-button>▼/span> span classarchive-module-show-button>▶/span> /div> a hrefhttps://9bo.hateblo.jp/archive/2021 classarchive-module-year-title archive-module-year-2021> 2021 /a> ul classarchive-module-months> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2021/02 classarchive-module-month-title archive-module-month-2021-2> 2021 / 2 /a> /li> /ul> /li> li classarchive-module-year archive-module-year-hidden data-year2020> div classarchive-module-button> span classarchive-module-hide-button>▼/span> span classarchive-module-show-button>▶/span> /div> a hrefhttps://9bo.hateblo.jp/archive/2020 classarchive-module-year-title archive-module-year-2020> 2020 /a> ul classarchive-module-months> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2020/09 classarchive-module-month-title archive-module-month-2020-9> 2020 / 9 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2020/02 classarchive-module-month-title archive-module-month-2020-2> 2020 / 2 /a> /li> /ul> /li> li classarchive-module-year archive-module-year-hidden data-year2019> div classarchive-module-button> span classarchive-module-hide-button>▼/span> span classarchive-module-show-button>▶/span> /div> a hrefhttps://9bo.hateblo.jp/archive/2019 classarchive-module-year-title archive-module-year-2019> 2019 /a> ul classarchive-module-months> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2019/10 classarchive-module-month-title archive-module-month-2019-10> 2019 / 10 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2019/09 classarchive-module-month-title archive-module-month-2019-9> 2019 / 9 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2019/07 classarchive-module-month-title archive-module-month-2019-7> 2019 / 7 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2019/03 classarchive-module-month-title archive-module-month-2019-3> 2019 / 3 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2019/01 classarchive-module-month-title archive-module-month-2019-1> 2019 / 1 /a> /li> /ul> /li> li classarchive-module-year archive-module-year-hidden data-year2018> div classarchive-module-button> span classarchive-module-hide-button>▼/span> span classarchive-module-show-button>▶/span> /div> a hrefhttps://9bo.hateblo.jp/archive/2018 classarchive-module-year-title archive-module-year-2018> 2018 /a> ul classarchive-module-months> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2018/08 classarchive-module-month-title archive-module-month-2018-8> 2018 / 8 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2018/05 classarchive-module-month-title archive-module-month-2018-5> 2018 / 5 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2018/03 classarchive-module-month-title archive-module-month-2018-3> 2018 / 3 /a> /li> /ul> /li> li classarchive-module-year archive-module-year-hidden data-year2017> div classarchive-module-button> span classarchive-module-hide-button>▼/span> span classarchive-module-show-button>▶/span> /div> a hrefhttps://9bo.hateblo.jp/archive/2017 classarchive-module-year-title archive-module-year-2017> 2017 /a> ul classarchive-module-months> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/12 classarchive-module-month-title archive-module-month-2017-12> 2017 / 12 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/11 classarchive-module-month-title archive-module-month-2017-11> 2017 / 11 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/09 classarchive-module-month-title archive-module-month-2017-9> 2017 / 9 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/08 classarchive-module-month-title archive-module-month-2017-8> 2017 / 8 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/07 classarchive-module-month-title archive-module-month-2017-7> 2017 / 7 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/06 classarchive-module-month-title archive-module-month-2017-6> 2017 / 6 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/05 classarchive-module-month-title archive-module-month-2017-5> 2017 / 5 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/03 classarchive-module-month-title archive-module-month-2017-3> 2017 / 3 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/02 classarchive-module-month-title archive-module-month-2017-2> 2017 / 2 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2017/01 classarchive-module-month-title archive-module-month-2017-1> 2017 / 1 /a> /li> /ul> /li> li classarchive-module-year archive-module-year-hidden data-year2016> div classarchive-module-button> span classarchive-module-hide-button>▼/span> span classarchive-module-show-button>▶/span> /div> a hrefhttps://9bo.hateblo.jp/archive/2016 classarchive-module-year-title archive-module-year-2016> 2016 /a> ul classarchive-module-months> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2016/07 classarchive-module-month-title archive-module-month-2016-7> 2016 / 7 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2016/06 classarchive-module-month-title archive-module-month-2016-6> 2016 / 6 /a> /li> li classarchive-module-month> a hrefhttps://9bo.hateblo.jp/archive/2016/05 classarchive-module-month-title archive-module-month-2016-5> 2016 / 5 /a> /li> /ul> /li> /ul> /div>/div> /div>/aside> /div>/div> /div> /div> footer idfooter data-brandhatenablog> div idfooter-inner> address classfooter-address> a hrefhttps://9bo.hateblo.jp/> img srchttps://cdn.blog.st-hatena.com/images/admin/blog-icon-noimage.png width16 height16 altほのぼのぼのぼの/> span classfooter-address-name>ほのぼのぼのぼの/span> /a> /address> p classservices> Powered by a hrefhttps://hatena.blog/>Hatena Blog/a> | a hrefhttps://blog.hatena.ne.jp/-/abuse_report?target_urlhttps%3A%2F%2F9bo.hateblo.jp%2F classreport-abuse-link test-report-abuse-link target_blank>ブログを報告する/a> /p> /div>/footer> script async srchttps://s.hatena.ne.jp/js/widget/star.js>/script> script> if (typeof window.Hatena undefined) { window.Hatena {}; } if (!Hatena.hasOwnProperty(Star)) { Hatena.Star { VERSION: 2, }; } /script> div idfb-root>/div>script>(function(d, s, id) { var js, fjs d.getElementsByTagName(s)0; if (d.getElementById(id)) return; js d.createElement(s); js.id id; js.src //connect.facebook.net/ja_JP/sdk.js#xfbml1&appId719729204785177&versionv17.0; fjs.parentNode.insertBefore(js, fjs);}(document, script, facebook-jssdk));/script> div classquote-box> div classtooltip-quote tooltip-quote-stock> i classblogicon-quote title引用をストック>/i> /div> div classtooltip-quote tooltip-quote-tweet js-tooltip-quote-tweet> a classjs-tweet-quote target_blank data-track-namequote-tweet data-track-once> img srchttps://cdn.blog.st-hatena.com/images/admin/quote/quote-x-icon.svg?version290ad662750024ea17472b9c1b7e66 title引用して投稿する > /a> /div>/div>div classquote-stock-panel idquote-stock-message-box styleposition: absolute; z-index: 3000> div classmessage-box idquote-stock-succeeded-message styledisplay: none> p>引用をストックしました/p> button classbtn btn-primary idquote-stock-show-editor-button data-track-namecuration-quote-edit-button>ストック一覧を見る/button> button classbtn quote-stock-close-message-button>閉じる/button> /div> div classmessage-box idquote-login-required-message styledisplay: none> p>引用するにはまずログインしてください/p> button classbtn btn-primary idquote-login-button>ログイン/button> button classbtn quote-stock-close-message-button>閉じる/button> /div> div classerror-box idquote-stock-failed-message styledisplay: none> p>引用をストックできませんでした。再度お試しください/p> button classbtn quote-stock-close-message-button>閉じる/button> /div> div classerror-box idunstockable-quote-message-box styledisplay: none; position: absolute; z-index: 3000;> p>限定公開記事のため引用できません。/p> /div>/div>script typex-underscore-template idjs-requote-button-template> div classrequote-button js-requote-button> button classrequote-button-btn tipsy-top title引用する>i classblogicon-quote>/i>/button> /div>/script> div idhidden-subscribe-button styledisplay: none;> div classhatena-follow-button-box btn-subscribe js-hatena-follow-button-box > a href# classhatena-follow-button js-hatena-follow-button> span classsubscribing> span classforeground>読者です/span> span classbackground>読者をやめる/span> /span> span classunsubscribing data-track-nameprofile-widget-subscribe-button data-track-once> span classforeground>読者になる/span> span classbackground>読者になる/span> /span> /a> div classsubscription-count-box js-subscription-count-box> i>/i> u>/u> span classsubscription-count js-subscription-count> /span> /div>/div> /div> script async srchttps://platform.twitter.com/widgets.js charsetutf-8>/script>script srchttps://b.st-hatena.com/js/bookmark_button.js charsetutf-8 asyncasync>/script>script typetext/javascript srchttps://cdn.blog.st-hatena.com/js/external/jquery.min.js?v1.12.4&version290ad662750024ea17472b9c1b7e66>/script>script srchttps://cdn.blog.st-hatena.com/js/texts-ja.js?version290ad662750024ea17472b9c1b7e66>/script> script idvendors-js data-envproduction srchttps://cdn.blog.st-hatena.com/js/vendors.js?version290ad662750024ea17472b9c1b7e66 crossoriginanonymous>/script>script idhatenablog-js data-envproduction srchttps://cdn.blog.st-hatena.com/js/hatenablog.js?version290ad662750024ea17472b9c1b7e66 crossoriginanonymous data-page-idindex>/script> script>Hatena.Diary.GlobalHeader.init()/script> script idvalve-dmp data-serviceblog srchttps://cdn.pool.st-hatena.com/valve/dmp.js data-test-iddmpjs async>/script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]