Skip to content

AWS JS SDK の Proxy 対応コードを最初から入れておく方が良いかも知れない #142

Closed
@dynamis

Description

@dynamis

AWS JS SDK はローカル試験で Proxy 利用時に S3Client の初期化時パラメータとしてリクエストハンドラの追加が必要であるが、入れ忘れで詰まる方も結構いるため対応済みバージョンのコードを入れた方が有り難いかもしれない。

https://github.com/webdino/lyceum-pokemon/blob/skeleton-halfway/server/utils/s3Client.js

import { NodeHttpHandler } from "@aws-sdk/node-http-handler";
import { ProxyAgent } from "proxy-agent";
import { S3Client } from "@aws-sdk/client-s3";
 
const agent = new ProxyAgent();
const config = useRuntimeConfig();

const client = new S3Client({
  region: config.region, 
  requestHandler: new NodeHttpHandler({
    httpAgent: agent,
    httpsAgent: agent,
  }),
});

export default s3Client;

的なコード (要動作検証) だと思うのだけど、AWS JS SDK の公式サンプルが最近 s3Client.js を別途使わない (そんなの分ける意味ねぇって私が愚痴ってたらその通りになった) 形に更新されてましたので、同時に s3Client.js じゃなくて server/utils/trainer.js 内に統合しても良いかも知れない (しそのままでも良い)。

https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/s3/actions/list-objects.js

このままだと本番デプロイしたときに無駄なものが挟まるのは良くないと思えば環境変数か何かで分岐するコードとしてもよいかもだが、どうも ProxyAgent 自体が proxy 設定環境変数がなければそのまま動くという振る舞いなので (import の無駄とかはあるのだけど) 直接ツッコミでも良い気はする。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions