備忘

個人的な技術メモです。ご了承ください。

S3に署名付きURLでアクセスする時にSignatureDoesNotMatch

S3署名付きURLを使ってフロンドエンドからS3上のファイルを取得、更新しようとした時の話。

署名に使う認証情報(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEYとか)を確認したり、AWS_SECRET_ACCESS_KEYにスラッシュが入ってるとうまくいかないという情報を見て何度かユーザー再作成ガチャを引いたり、バケット作り直したり、axiosの記述を疑ったりしましたが、、、

自分の場合は対象のS3バケットにCORSを設定してなかったことが原因でした。
PUT時にヘッダ必要になりますのでAllowedHeadersも忘れずにお願いします(自戒)

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

プロジェクトルートからのimport

相対パスでのimportが嫌になった時はtsconfig.jsonのcompilerOptionsにbaseUrlを追記

"baseUrl": "./"

上記でtsconfig.json置かれているフォルダ(主にルートだと思います)からimportできるようになります。

TypeScript: TSConfig Reference - Docs on every TSConfig option

サーバー再起動を忘れずに

dev containersでコンテナが開けない

An error occurred setting up the container.というエラーが出ましたが結局原因わからず、

  • ローカルでdocker-composeからコンテナ起動してコマンド実行(go run main.go)できる
  • dev containersでDockerfileを読むと開けるが、docker-compose.ymlを読むと開けない
  • Dockerfileとdocker-compose.ymlを新規フォルダにコピーしてymlを読むと開ける

という状況で原因分かりませんでしたが、一度削除してgit cloneで作り直すと起動できるようになりました。 参考にならないと思いますすみません。

goenvで新しいバージョンがリストに出てこない

goenvをupdateで最新版にしてもgoenv install -lで新しめのバージョンが出てこない場合goenvを再インストールで直るようです。

anyenv経由での再インストール

anyenv uninstall goenv
anyenv install goenv
goenv install -l

1.17.5までしか表示されていませんでしたが、現時点での最新版(1.19.2)までいけるようになりました。