CINXE.COM
VPC内のAmazon API Gatewayをインターネットオーバーで疎通確認する | フューチャー技術ブログ
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <!-- ███████╗██╗░░░██╗████████╗██╗░░░██╗██████╗░███████╗ ██╔════╝██║░░░██║╚══██╔══╝██║░░░██║██╔══██╗██╔════╝ █████╗░░██║░░░██║░░░██║░░░██║░░░██║██████╔╝█████╗░░ ██╔══╝░░██║░░░██║░░░██║░░░██║░░░██║██╔══██╗██╔══╝░░ ██║░░░░░╚██████╔╝░░░██║░░░╚██████╔╝██║░░██║███████╗ ╚═╝░░░░░░╚═════╝░░░░╚═╝░░░░╚═════╝░╚═╝░░╚═╝╚══════╝ ████████╗███████╗░█████╗░██╗░░██╗ ╚══██╔══╝██╔════╝██╔══██╗██║░░██║ ░░░██║░░░█████╗░░██║░░╚═╝███████║ ░░░██║░░░██╔══╝░░██║░░██╗██╔══██║ ░░░██║░░░███████╗╚█████╔╝██║░░██║ ░░░╚═╝░░░╚══════╝░╚════╝░╚═╝░░╚═╝ ██████╗░██╗░░░░░░█████╗░░██████╗░ ██╔══██╗██║░░░░░██╔══██╗██╔════╝░ ██████╦╝██║░░░░░██║░░██║██║░░██╗░ ██╔══██╗██║░░░░░██║░░██║██║░░╚██╗ ██████╦╝███████╗╚█████╔╝╚██████╔╝ ╚═════╝░╚══════╝░╚════╝░░╚═════╝░ Welcome engineer. https://www.future.co.jp/recruit/ --> <title>VPC内のAmazon API Gatewayをインターネットオーバーで疎通確認する | フューチャー技術ブログ</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="width=device-width, initial-scale=1.0" name="viewport"> <meta name="description" content="はじめにTIG DXユニットの真野です。AWSのAPI Gateway+Lambda という構成でWeb API開発を行う際、ちょっと便利に使える疎通方法をまとめます。 背景API GatewayですがPublicなエンドポイントがあれば curlコマンドやPostmanを用いての動作検証も容易だと思います。 一方でVPCエンドポイントを利用してプライベート APIとして構築されている場合は少し厄"> <meta property="og:type" content="article"> <meta property="og:title" content="VPC内のAmazon API Gatewayをインターネットオーバーで疎通確認する | フューチャー技術ブログ"> <meta property="og:url" content="https://future-architect.github.io/articles/20210924a/index.html"> <meta property="og:site_name" content="フューチャー技術ブログ"> <meta property="og:description" content="はじめにTIG DXユニットの真野です。AWSのAPI Gateway+Lambda という構成でWeb API開発を行う際、ちょっと便利に使える疎通方法をまとめます。 背景API GatewayですがPublicなエンドポイントがあれば curlコマンドやPostmanを用いての動作検証も容易だと思います。 一方でVPCエンドポイントを利用してプライベート APIとして構築されている場合は少し厄"> <meta property="og:locale" content="ja_JP"> <meta property="og:image" content="https://future-architect.github.io/images/20210924a/image.png"> <meta property="og:image" content="https://future-architect.github.io/images/20210924a/オーソライザー.png"> <meta property="article:published_time" content="2021-09-23T15:00:00.000Z"> <meta property="article:modified_time" content="2025-03-26T00:28:14.856Z"> <meta property="article:tag" content="Go"> <meta property="article:tag" content="AWS"> <meta property="article:tag" content="VPC"> <meta property="article:tag" content="APIGateway"> <meta name="twitter:card" content="summary"> <meta name="twitter:image" content="https://future-architect.github.io/images/20210924a/image.png"> <link rel="alternate" href="/atom.xml" title="フューチャー技術ブログ" type="application/atom+xml"> <link rel="icon" href="/logo.svg" sizes="any" type="image/svg+xml"> <link rel="icon" href="/favicon.ico" sizes="any" type="48x48"> <link rel="mask-icon" href="/logo.svg" sizes="any" color="#0bd"> <link rel="icon alternate" href="/favicon.ico"> <link rel="apple-touch-icon" sizes='180x180' href="/apple-touch-icon.png"> <link rel="apple-touch-icon" sizes='57x57' href="/apple-touch-icon-57x57.png"> <link rel="canonical" href="https://future-architect.github.io/articles/20210924a/"> <meta content="Go,AWS,VPC,APIGateway" name="keywords"> <meta content="真野隼記" name="author"> <link rel="preload" as="image" href="/banner.jpg" /> <link rel='manifest' href='/manifest.webmanifest'/> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"> <link rel="stylesheet" href="/metronic/assets/style.css"> <link rel="stylesheet" href="/css/theme-styles.css"> <meta name="generator" content="Hexo 5.4.2"></head> <body class="corporate"> <div class="wrap" itemscope itemtype="https://schema.org/TechArticle"> <!-- BEGIN HEADER --> <header class="header"> <div class="header-overlay"> <div class="header-menu"></div> <div class="header-title"><a href="/">Future Tech Blog</a></div> <div class="header-title-sub">フューチャー技術ブログ</div> </div> </header> <!-- Header END --> <div class="container"> <ul class="breadcrumb"> <li><a href="/">Home</a></li> <li><a href="/articles/">Blog</a></li> <li class="active">Post</li> </ul> <section id="main" class="margin-top-30"> <div class="article-category"> <a class="article-category-link" href="/categories/Programming/">Programmingカテゴリ</a> </div> <h2 itemprop="name" class="article-title">VPC内のAmazon API Gatewayをインターネットオーバーで疎通確認する <a target="_blank" rel="noopener" href="https://github.com/future-architect/future-architect.github.io/edit/main/source/_posts/2021/20210924a_VPC内のAmazon_API_Gatewayをインターネットオーバーで疎通確認する.md" title="Suggest Edits" class="github-edit"><i class="github-edit-icon"></i></a> </h2> <div class="row"> <main class="col-md-9 blog-posts"> <article id="post-2021/20210924a_VPC内のAmazon_API_Gatewayをインターネットオーバーで疎通確認する" class="article article-type-post blog-item" itemscope itemprop="blogPost"> <div class="article-inner"> <header class="article-header"> <ul class="blog-info"> <li class="blog-info-item"><a href="/articles/2021/" class="publish-date"><time datetime="2021-09-23T15:00:00.000Z" itemprop="datePublished">2021.09.24</time></a> </li> <li class="blog-info-item"><li><a href="/authors/%E7%9C%9F%E9%87%8E%E9%9A%BC%E8%A8%98" title="真野隼記さんの記事一覧へ" class="post-author">真野隼記</a></li></li> <li class="blog-info-item"> <a href="/tags/Go/" title="Goタグの記事へ" class="tag-list-link">Go言語</a> <a href="/tags/AWS/" title="AWSタグの記事へ" class="tag-list-link">AWS</a> <a href="/tags/VPC/" title="VPCタグの記事へ" class="tag-list-link">VPC</a> <a href="/tags/APIGateway/" title="APIGatewayタグの記事へ" class="tag-list-link">APIGateway</a> </li> <li class="blog-info-item">1,300 View</li> </ul> </header> <div class="article-entry" itemprop="articleBody"> <h1 id="はじめに"><a href="#はじめに" class="headerlink" title="はじめに"></a>はじめに</h1><p>TIG DXユニットの真野です。AWSのAPI Gateway+Lambda という構成でWeb API開発を行う際、ちょっと便利に使える疎通方法をまとめます。</p> <h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>API GatewayですがPublicなエンドポイントがあれば <code>curl</code>コマンドや<code>Postman</code>を用いての動作検証も容易だと思います。</p> <p>一方でVPCエンドポイントを利用してプライベート APIとして構築されている場合は少し厄介です。そのセグメントにVPCなどで属することができればよいのですが、そのためだけに接続するのは煩わしい場面があります。踏み台サーバを作ってAWS Systems Manager(ssmコマンド)でログインするのも、開発環境でそこまでするのかという感覚がありました。また、AWS WAFなどで接続が絞られている時にはその条件を思い出す必要があり(覚えておけよって感じですが)、疎通確認すらちょっと面倒な場面があります。</p> <h2 id="aws-apigateway-test-invoke-methodコマンドが便利"><a href="#aws-apigateway-test-invoke-methodコマンドが便利" class="headerlink" title="aws apigateway test-invoke-methodコマンドが便利"></a>aws apigateway test-invoke-methodコマンドが便利</h2><p>API Gatewayのマネジメントコンソールには動作確認用の<a target="_blank" rel="noopener" href="https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/how-to-test-method.html">テスト呼び出し機能</a>が存在します。</p> <img src="/images/20210924a/image.png" alt="マネジメントコンソールのテスト呼び出し" width="1200" height="601" loading="lazy"> <p>こちらと同等の機能がawscliにも提供されています。<a target="_blank" rel="noopener" href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/apigateway/test-invoke-method.html">api gateway test-invoke-method</a>コマンドです。これを利用することでマネジメントコンソール上と同等のリクエストをコマンドラインから確認できます。</p> <p>つまりプライベートに構築されたAPI Gatewayに対しても、適切な権限があれば疎通確認ができるということです。</p> <p>実行例を載せます。レスポンスは少し大きなJSONだったので、<code>jq</code>コマンドでフィールドを、ステータスコード・応答ヘッダ・応答ボディに絞っています。profileやrest-api-id, resoruce-idは適時読み替えてください。</p> <figure class="highlight sh"><figcaption><span>test-invoke-methodの実行例</span></figcaption><table><tr><td class="code"><pre><span class="line">aws apigateway --profile <my_profile> test-invoke-method --rest-api-id <1234123412> --resource-id <3gapai> \</span><br><span class="line"> --http-method PGET --path-with-query-string /v1/health | jq <span class="string">'.status, .headers, .body'</span></span><br><span class="line">200</span><br><span class="line">{</span><br><span class="line"> <span class="string">"Content-Type"</span>: <span class="string">"application/json"</span>,</span><br><span class="line"> <span class="string">"Vary"</span>: <span class="string">"Accept-Encoding"</span>,</span><br><span class="line"> <span class="string">"X-Amzn-Trace-Id"</span>: <span class="string">"Root=1-67891233-abcdef012345678912345678;Sampled=0"</span></span><br><span class="line">}</span><br><span class="line"><span class="string">"{\"message\":\"OK\"}\n"</span></span><br></pre></td></tr></table></figure> <p>–rest-api-id と –resource-idの取得方法は<a target="_blank" rel="noopener" href="https://stackoverflow.com/questions/52446929/what-is-the-rest-api-id-and-resource-id-and-where-do-i-find-them">Stackoverflowの回答</a>がシンプルでした。こちらを参考に取得すると良いかなと思います。</p> <h2 id="API-GatewayにLambdaオーソライザーが設定されている場合"><a href="#API-GatewayにLambdaオーソライザーが設定されている場合" class="headerlink" title="API GatewayにLambdaオーソライザーが設定されている場合"></a>API GatewayにLambdaオーソライザーが設定されている場合</h2><p>API GatewayでLambdaオーソライザーが設定されている構成の場合があります。オーソライザー側についてはこのブログにも<a href="https://future-architect.github.io/articles/20210610a/">AWS APIGateway Custom Authorizer入門</a>という記事がありますのでぜひ参照ください。</p> <img src="/images/20210924a/オーソライザー.png" alt="API Gatewayのカスタムオーソライザーの構成図" width="575" height="251" loading="lazy"> <p><a target="_blank" rel="noopener" href="https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html">https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html</a></p> <p>このときに、オーソライザー側で認可する場合に、後続に追加パラメータを設定する仕様で設計されていると少し考慮が必要です。というのも<code>aws apigateway test-invoke-method</code>はオーソライザー経由で実行するのではなく、直接API Gatewayにトリガーされたリソースを呼び出すからです。この場合は<code>aws apigateway test-invoke-method</code>に後続のLambdaなどが必要とする、必要なパラメータを<code>--headers</code>などで追加して呼び出すするようにしましょう。</p> <p>ちなみおに、オーソライザー自体のテストもマネジメントコンソールから可能ですし、AWS CLIからも <code>apigateway test-invoke-authorizer</code>コマンドで可能です。</p> <ul> <li><a target="_blank" rel="noopener" href="https://docs.aws.amazon.com/cli/latest/reference/apigateway/test-invoke-authorizer.html">https://docs.aws.amazon.com/cli/latest/reference/apigateway/test-invoke-authorizer.html</a></li> </ul> <p>私が利用したことがないため、今回は説明を割愛します。</p> <h2 id="AWS-SDK-for-Goからテスト要求を呼び出してみる。"><a href="#AWS-SDK-for-Goからテスト要求を呼び出してみる。" class="headerlink" title="AWS SDK for Goからテスト要求を呼び出してみる。"></a>AWS SDK for Goからテスト要求を呼び出してみる。</h2><p>AWS SDK for Goを利用すればTest Invokeの呼び出しができます。</p> <ul> <li><a target="_blank" rel="noopener" href="https://docs.aws.amazon.com/sdk-for-go/api/service/apigateway/#APIGateway.TestInvokeMethod">https://docs.aws.amazon.com/sdk-for-go/api/service/apigateway/#APIGateway.TestInvokeMethod</a></li> </ul> <p>実装例を簡単に記載します。</p> <figure class="highlight go"><table><tr><td class="code"><pre><span class="line"><span class="keyword">package</span> main</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> (</span><br><span class="line"> <span class="string">"fmt"</span></span><br><span class="line"> <span class="string">"github.com/aws/aws-sdk-go/aws"</span></span><br><span class="line"> <span class="string">"github.com/aws/aws-sdk-go/aws/session"</span></span><br><span class="line"> <span class="string">"github.com/aws/aws-sdk-go/service/apigateway"</span></span><br><span class="line"> <span class="string">"log"</span></span><br><span class="line"> <span class="string">"net/http"</span></span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> apigw = apigateway.New(session.Must(session.NewSessionWithOptions(session.Options{</span><br><span class="line"> Profile: <span class="string">"my_profile"</span>, <span class="comment">// TODO 書き換え</span></span><br><span class="line"> SharedConfigState: session.SharedConfigEnable,</span><br><span class="line">},</span><br><span class="line">)))</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">func</span> <span class="title">main</span><span class="params">()</span></span> {</span><br><span class="line"></span><br><span class="line"> params := &apigateway.TestInvokeMethodInput{</span><br><span class="line"> RestApiId: aws.String(<span class="string">"1234123412"</span>), <span class="comment">// TODO 書き換え</span></span><br><span class="line"> ResourceId: aws.String(<span class="string">"3gapai"</span>), <span class="comment">// TODO 書き換え</span></span><br><span class="line"> HttpMethod: aws.String(http.MethodGet),</span><br><span class="line"> PathWithQueryString: aws.String(<span class="string">"/v1/health"</span>),</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> req, resp := apigw.TestInvokeMethodRequest(params)</span><br><span class="line"> <span class="keyword">if</span> err := req.Send(); err != <span class="literal">nil</span> {</span><br><span class="line"> log.Fatalf(<span class="string">"test invoke: %v"</span>, err)</span><br><span class="line"> }</span><br><span class="line"> fmt.Printf(<span class="string">"%d\n%v\n%v\n"</span>, *resp.Status, aws.StringValueMap(resp.Headers), *resp.Body)</span><br><span class="line">}</span><br></pre></td></tr></table></figure> <p>これを実行すると、awscliコマンドで実行した結果と同等の応答を得られます。</p> <figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">>go run sample.go</span><br><span class="line">200</span><br><span class="line">map[Content-Type:application/json Vary:Accept-Encoding X-Amzn-Trace-Id:Root=1-67891233-abcdef012345678912345678;Sampled=0]</span><br><span class="line">{<span class="string">"message"</span>:<span class="string">"OK"</span>}</span><br></pre></td></tr></table></figure> <p>awscli側のapigateway test-invoke-methodに慣れておけば、インタフェースで悩むことはほぼ無いと思います。<br>取得結果のステータスコードや応答ボディなどは <em>int64や</em>string でポインタなので一瞬戸惑うくらいでしょうか。</p> <h2 id="まとめ"><a href="#まとめ" class="headerlink" title="まとめ"></a>まとめ</h2><p>プライベートなAPI Gatewayだと開発環境の疎通レベルでも検証が面倒だと思ったときには、<code>test-invoke-method</code>コマンドを利用する選択もあるよという記事でした。</p> <p>当然、AWS SDKからも呼ぶことができますので、ちょっとした疎通テストを自動化するときにも利用できるかと思います。</p> </div> <footer> <section class="social-area"> <!-- シェアボタン START --> <ul class="social-button"> <!-- Twitter --> <li> <a class="social-btn twitter-btn" target="_blank" href="https://twitter.com/intent/tweet?url=https://future-architect.github.io/articles/20210924a/&related=twitterapi%2Ctwitter&text=VPC%E5%86%85%E3%81%AEAmazon%20API%20Gateway%E3%82%92%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7%E7%96%8E%E9%80%9A%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%20%7C%20%E3%83%95%E3%83%A5%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E6%8A%80%E8%A1%93%E3%83%96%E3%83%AD%E3%82%B0" rel="nofollow noopener"> <i></i><span class="social-btn-label">2</span> </a> </li> <!-- Facebook --> <li> <a class="social-btn fb-btn" target="_blank" href="http://www.facebook.com/share.php?u=https://future-architect.github.io/articles/20210924a/&t=VPC%E5%86%85%E3%81%AEAmazon%20API%20Gateway%E3%82%92%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7%E7%96%8E%E9%80%9A%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B" rel="nofollow noopener"> <i></i><span class="social-btn-label">シェア</span> </a> </li> <!-- hatebu --> <li> <a class="social-btn hatebu-btn" target="_blank" href="https://b.hatena.ne.jp/entry/s/future-architect.github.io/articles/20210924a/" rel="nofollow noopener"> <i></i><span class="social-btn-label">6</span> </a> </li> <!-- pocket --> <li> <a class="social-btn pocket-btn" target="_blank" href="https://getpocket.com/save?url=https://future-architect.github.io/articles/20210924a/" rel="nofollow noopener"> <i></i><span class="social-btn-label">6</span> </a> </li> </ul> <!-- シェアボタン END --> </section> <aside> <section class="related-post margin-bottom-40 nav"> <h2 id="related"><a href="#related" class="headerlink" title="関連記事"></a>関連記事</h2> <div class="widget"> <ul class="nav related-post-link"><li class="related-posts-item"><span>2021.10.26</span><span class="snscount">♡34</span><a href=/articles/20211026a/ title="DynamoDBやKinesis Data Streamsなどを利用するサービスをそれなりの期間で稼働させているとポツポツ下記のようなエラーが発生することが分かりました。RequestError: send request failedcaused by: Post ...: read tcp 169.254.0.1:55638->3.113.218.4:443: read: connection reset by peer">AWS利用時に read: connection reset by peer が出たときのリトライ検討</a></li><li class="related-posts-item"><span>2021.10.25</span><span class="snscount">♡16</span><a href=/articles/20211025a/ title="DynamoDBをGoで操作することにかけては、[DynamoDB×Go連載] に参加するくらい関心があるのですが、AWS SDK for Goの公式ライブラリに含まれる、ヘルパーパッケージについて存在を今までスルーしていました。使ってみると業務的には利用一択だと思ったので今後使っていくぞという覚書としてまとめます。">AWS SDK for GoでDynamoDBの式を扱うヘルパーパッケージの使い方</a></li><li class="related-posts-item"><span>2021.01.22</span><span class="snscount">♡13</span><a href=/articles/20210122/ title="DynamoDB Streamsは、DynamoDBに対する項目の追加、変更、削除をイベントとして検出できる機能です。テーブルの項目が変更されるとすぐに、新しいレコードがテーブルのストリームに表示されます">オレのDynamoDB Streamsが再着火しないわけがない</a></li><li class="related-posts-item"><span>2020.11.12</span><span class="snscount">♡11</span><a href=/articles/20201112/ title="TIGの辻です。サーバーレスなアプリケーションを開発するときにAWS LambdaやCloud RunといったFaaSはとても重宝します。デプロイする関数のコードは1つの関数がモノリシックな大きな関数にならないように、小さな関数を組み合わせて実装するのが基本です。いくつかのユースケースでAWS LambdaからAWS Lambdaを同期的に呼び出したいケースがあったのですが、開発者が意識しておいたほうがいいようなハマりどころがいくつかありました。本記事ではGoで[AWS LambdaからAWS Lambdaを同期的に呼び出すとき]のハマりどころやTipsを紹介します。以下のような構成です">GoでLambdaからLambdaを呼び出すときに気をつけたいポイント6選</a></li><li class="related-posts-item"><span>2020.07.27</span><span class="snscount">♡10</span><a href=/articles/20200727/ title="[サーバレス連載企画]の8回目です。TIG DXユニットの真野です。ここ数年は産業向けのIoT(例えば工場IoTやモビリティIoT)を行っています。[工場をハックするための基本知識] の記事を書いた棚井さんと同じチームに所属しています。[サーバレス連載企画] の第8弾目として、Serverlessの代表格であるAWS LambdaでGoを用いてKinesisに対するKPL/KCL相当の処理についてまとめていきます。">GoからAWS KinesisのAggregationFormatを利用する</a></li><li class="related-posts-item"><span>2020.03.26</span><span class="snscount">♡8</span><a href=/articles/20200326/ title="サーバレス連載の第2弾はLambdaアプリをGoで開発する中で調べた内容や、Tipsを紹介します。">Serverless連載2: AWS Lambda×Goの開発Tips</a></li></ul> </div> </section> <section class="reference-post margin-bottom-40 nav"> </section> <section class="career-counseling article-entry margin-bottom-40 nav"> <h2 id="career"><a href="#career-counseling" class="headerlink" title="キャリア相談"></a>We're hiring</h2> <p>フューチャーで一緒に働く仲間を大募集しています!</p> <p>フューチャーで働くうえでのキャリア、会社紹介や事業内容の説明など相談会を実施中です!</p> <div class="d-flex flex-wrap flex-lg-nowrap gap-3"> <div class="row article-card col-12 col-lg-6"> <a target="_blank" rel="noopener" href="https://www.future.co.jp/recruit/recruit/rec-career/" title="フューチャー採用情報" class="col-sm-4 col-md-4 img_wrap"> <img src="/career_official.jpg" class="img-responsive margin-bottom-20" alt="" width="200" height="135" loading="lazy"> </a> <div class="col-sm-8 col-md-8 margin-bottom-40"> <a target="_blank" rel="noopener" href="https://www.future.co.jp/recruit/recruit/rec-career/"><div style="font-weight:bold;">フューチャー採用ページ | future.co.jp</div></a> <div class="lede">私たちは、多様なバックグラウンドを持つ人材が集まってこそ、より強い組織になると考えています。</div> </div> </div> <div class="row article-card col-12 col-lg-6"> <a target="_blank" rel="noopener" href="https://open.talentio.com/r/1/c/future/pages/91866" title="フューチャーキャリア相談会 | open.talentio.com" class="col-sm-4 col-md-4 img_wrap"> <img src="/career.jpg" class="img-responsive margin-bottom-20" alt="" width="200" height="135" loading="lazy"> </a> <div class="col-sm-8 col-md-8 margin-bottom-40"> <a target="_blank" rel="noopener" href="https://open.talentio.com/r/1/c/future/pages/91866"><div style="font-weight:bold;">フューチャーキャリア相談会 | talentio </div></a> <div class="lede">キャリアについてのお悩みに対してフューチャーの人事が相談にのります。</div> </div> </div> </div> </section> </aside> </footer> </div> </article> </main> <aside class="col-md-3 blog-sidebar"> <!-- START SIDEBAR --> <section class="toc-section"> <h2 class="margin-top-30">目次</h2> <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB"><span class="toc-text">はじめに</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%83%8C%E6%99%AF"><span class="toc-text">背景</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#aws-apigateway-test-invoke-method%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E4%BE%BF%E5%88%A9"><span class="toc-text">aws apigateway test-invoke-methodコマンドが便利</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#API-Gateway%E3%81%ABLambda%E3%82%AA%E3%83%BC%E3%82%BD%E3%83%A9%E3%82%A4%E3%82%B6%E3%83%BC%E3%81%8C%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88"><span class="toc-text">API GatewayにLambdaオーソライザーが設定されている場合</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#AWS-SDK-for-Go%E3%81%8B%E3%82%89%E3%83%86%E3%82%B9%E3%83%88%E8%A6%81%E6%B1%82%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%80%82"><span class="toc-text">AWS SDK for Goからテスト要求を呼び出してみる。</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E3%81%BE%E3%81%A8%E3%82%81"><span class="toc-text">まとめ</span></a></li></ol></li></ol> </section> <section class="category"> <h2 class="margin-top-30">カテゴリー</h2> <div class="widget"> <ul class="nav sidebar-categories margin-bottom-40"> <li class=""><a href="/categories/Programming/">Programming (521)</a></li> <li class=""><a href="/categories/Infrastructure/">Infrastructure (300)</a></li> <li class=""><a href="/categories/Culture/">Culture (107)</a></li> <li class=""><a href="/categories/DataScience/">DataScience (74)</a></li> <li class=""><a href="/categories/IoT/">IoT (36)</a></li> <li class=""><a href="/categories/DB/">DB (31)</a></li> <li class=""><a href="/categories/DevOps/">DevOps (25)</a></li> <li class=""><a href="/categories/Business/">Business (24)</a></li> <li class=""><a href="/categories/Management/">Management (23)</a></li> <li class=""><a href="/categories/%E8%AA%8D%E8%A8%BC%E8%AA%8D%E5%8F%AF/">認証認可 (22)</a></li> <li class=""><a href="/categories/Security/">Security (19)</a></li> <li class=""><a href="/categories/VR/">VR (15)</a></li> <li class=""><a href="/categories/Design/">Design (11)</a></li> </ul> </div> </section> <section class="podcast-link"> <h2 class="margin-top-30">Tech Cast</h2> <div class="class="widget-wrap"> <div class="widget"> <ul class="nav techcast"> <li><a href="https://podcasters.spotify.com/pod/show/futuretechcast/episodes/39-AI-e2t4el8" title="フューチャーがお届けするポッドキャストです。#39 フューチャー流、AI領域における新規ビジネスの立ち上げ方" target="_blank" rel="noopener"> #39 フューチャー流、AI領域における新規ビジネスの立ち上げ方</a></li> <li><a href="https://podcasters.spotify.com/pod/show/futuretechcast/episodes/38-AIAI-e22h1v0" title="フューチャーがお届けするポッドキャストです。#38 AIグループリーダー加藤さんに聞く「AIチームのミッションと展望」" target="_blank" rel="noopener"> #38 AIグループリーダー加藤さんに聞く「AIチームのミッションと展望」</a></li> <li><a href="https://podcasters.spotify.com/pod/show/futuretechcast/episodes/37-e227p84" title="フューチャーがお届けするポッドキャストです。#37 自然言語処理を使った文書検索エンジンシステム開発と新規サービス検討(後編)" target="_blank" rel="noopener"> #37 自然言語処理を使った文書検索エンジンシステム開発と新規サービス検討(後編)</a></li> </ul> </div> </div> </section> <section class="advent-calendar"> <h2 class="margin-top-30">アドベントカレンダー</h2> <div class="widget"> <ul class="nav-flex"> <li><a href="http://qiita.com/advent-calendar/2024/future" title="フューチャー Advent Calendar 2024 #Qiita" target="_blank" rel="noopener">2024年</a></li> <li><a href="http://qiita.com/advent-calendar/2023/future" title="フューチャー Advent Calendar 2023 #Qiita" target="_blank" rel="noopener">2023年</a></li> <li><a href="http://qiita.com/advent-calendar/2022/future" title="フューチャー Advent Calendar 2022 #Qiita" target="_blank" rel="noopener">2022年</a></li> <li><a href="http://qiita.com/advent-calendar/2021/future" title="フューチャー Advent Calendar 2021 #Qiita" target="_blank" rel="noopener">2021年</a></li> <li><a href="http://qiita.com/advent-calendar/2020/future" title="フューチャー Advent Calendar 2020 #Qiita" target="_blank" rel="noopener">2020年</a></li> <li><a href="http://qiita.com/advent-calendar/2019/future" title="フューチャー Advent Calendar 2019 #Qiita" target="_blank" rel="noopener">2019年</a></li> <li><a href="http://qiita.com/advent-calendar/2018/future" title="フューチャー Advent Calendar 2018 #Qiita" target="_blank" rel="noopener">2018年</a></li> <li><a href="http://qiita.com/advent-calendar/2017/future" title="フューチャー Advent Calendar 2017 #Qiita" target="_blank" rel="noopener">2017年</a></li> <li><a href="http://qiita.com/advent-calendar/2016/future" title="フューチャー Advent Calendar 2016 #Qiita" target="_blank" rel="noopener">2016年</a></li> <li><a href="http://qiita.com/advent-calendar/2015/future" title="フューチャー Advent Calendar 2015 #Qiita" target="_blank" rel="noopener">2015年</a></li> </ul> </div> </section> <!-- END SIDEBAR --> </aside> </div> </section> </div> <!-- BEGIN PRE-FOOTER --> <footer> <div class="pre-footer"> <div class="container"> <div class="row"> <div class="col-lg-4 col-md-4 col-sm-6 col-6 pre-footer-col"> <h2>About Us</h2> <p>経営とITをデザインする、フューチャーの技術ブログです。業務で利用している幅広い技術について紹介します。<br /><br /><a target="_blank" rel="noopener" href="http://www.future.co.jp/">http://www.future.co.jp/</a></p> <div class="social-btn twitter-btn twitter-follow-btn"> <a href="https://twitter.com/intent/follow?screen_name=future_techblog " target="_blank" rel="nofollow noopener"> <i></i><span class="tw-btn-label">フューチャー技術ブログをフォロー</span> </a> </div> </div> <div class="col-lg-2 col-md-4 col-sm-4 col-4 pre-footer-col"> <h2>Contact</h2> <address class="margin-bottom-40"> <p>記事についてはX(旧Twitter)かメールでお問い合わせください<a href="mailto:techblog@future.co.jp">techblog@future.co.jp</a></p> <a href="https://www.future.co.jp/contact_us/" title="お問い合わせページ" target="_blank" rel="noopener">その他のお問い合わせ先</a><br> <a href="https://www.future.co.jp/architect/socialmediapolicy/" title="ソーシャルメディアポリシー" target="_blank" rel="noopener">メディアポリシー</a><br><br> </address> </div> <div class="col-lg-2 col-md-4 col-sm-6 col-6 pre-footer-col"> <h2>Contents</h2> <a href="https://future-architect.github.io/coding-standards/" title="Future Enterprise Coding Standards" target="_blank" rel="noopener">コーディング規約</a><br> <a href="https://future-architect.github.io/typescript-guide/" title="仕事ですぐに使えるTypeScript" target="_blank" rel="noopener">仕事ですぐに使えるTypeScript</a><br> </div> <div class="col-lg-2 col-md-4 col-sm-3 col-3 pre-footer-col"> <h2>Event</h2> <a href="https://future.connpass.com/" title="経営とITをデザインするフューチャーの勉強会です" target="_blank" rel="noopener">connpass</a><br> <a href="https://www.future.co.jp/futureinsightseminar/" title="フューチャーインサイトセミナー" target="_blank" rel="noopener">Webセミナー</a><br> </div> <div class="col-lg-2 col-md-4 col-sm-3 col-3 pre-footer-col"> <h2>SNS</h2> <a href="https://github.com/future-architect" title="Future's official open source repositories" target="_blank" rel="noopener">GitHub</a><br> <a href="https://qiita.com/organizations/future" title="フューチャーのQiita Organizationです" target="_blank" rel="noopener">Qiita</a><br> <a href="https://note.future.co.jp/" title="フューチャーの公式note" target="_blank" rel="noopener">未来報</a><br> <a href="https://www.youtube.com/channel/UCJUSwYYd0CkGgmEKAW7QVpw" title="フューチャーYoutubeチャネル" target="_blank" rel="noopener">Youtube</a> </div> </div> </div> </div> <div class="footer"> <div class="container"> <div class="row"> <div class="col-md-6 col-sm-6 padding-top-10"> © 2025 フューチャー技術ブログ<br> </div> </div> </div> </div> </footer> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-X1C28R8H0M"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-X1C28R8H0M'); gtag('config', 'UA-74047147-1'); // 過渡期対応 </script> </div> </body> </html>