LGTMoonのLGTM画像保存先をWasabiに変更
参考
公式のヘルプ
How do I use AWS SDK for Java (v2) with Wasabi? – Wasabi Knowledge Base
エンドポイントに https://s3.wasabisys.com を設定する必要がある
この URL によると v2 って書いてるけど今使っている SDK のバージョンは?
"com.amazonaws" % "aws-java-sdk-s3" % "1.11.926",
よくわからん
とりあえず Endpoint を差し替える必要がある
Endpoint について
Wasabiオブジェクトストレージ : Enterprise Cloud Knowledge CenterWasabi 1.1.3 ドキュメント
こんな感じでできた
code:scala
val s3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials()))
.build()
ユーザーのアクセスを制御する
バケットの設定からポリシーに行って、ARNを確認する
arn:aws:s3:::lgtmoon
Policies に行って Create して Policiy Generator する
https://gyazo.com/bc2e24ec46506ed67fd1a6d1f0dbd2e1
出来たポリシー↓ それっぽい(あってそう)
code:sh
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::lgtmoon"
],
"Condition": {}
}
]
}
Users からポリシーを付与する
このポリシーではACLの変更ができなかった
結局これが正しい
たしか AWS の時にも同じ罠にハマった気がする
code:json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::lgtmoon",
"arn:aws:s3:::lgtmoon/*"
]
}
]
}
terraform
もしかしたら Wasabi でも terraform 使えるには使えるっぽい
Wasabiにドメインを割り当てる
How do I use Cloudflare with Wasabi? – Wasabi Knowledge Base
FQDNの名前でバケットを作る
wasabi.lgtmoon.dev -> s3.ap-northeast-1.wasabisys.com の CNAME を登録
これで完了
Herokuにデプロイしたらエラー
code:sh
error - akka.actor.OneForOneStrategy - org.im4java.core.CommandException: convert: error while loading shared libraries: libIlmImf-2_2.so.22: cannot open shared object file: No such file or directory org.im4java.core.CommandException: org.im4java.core.CommandException: convert: error while loading shared libraries: libIlmImf-2_2.so.22: cannot open shared object file: No such file or directory
at org.im4java.core.ImageCommand.run(ImageCommand.java:219)
at command.ImageMagick.execute(ImageMagick.scala:49)
at command.ImageMagick.convert(ImageMagick.scala:43)
at actor.ImageActor$$anonfun$receive$1.applyOrElse(ImageActor.scala:29)
at akka.actor.Actor.aroundReceive(Actor.scala:534)
at akka.actor.Actor.aroundReceive$(Actor.scala:532)
at actor.ImageActor.aroundReceive(ImageActor.scala:18)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:573)
at akka.actor.ActorCell.invoke(ActorCell.scala:543)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269)
at akka.dispatch.Mailbox.run(Mailbox.scala:230)
at akka.dispatch.Mailbox.exec(Mailbox.scala:242)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
Caused by: org.im4java.core.CommandException: convert: error while loading shared libraries: libIlmImf-2_2.so.22: cannot open shared object file: No such file or directory
at org.im4java.core.ImageCommand.finished(ImageCommand.java:253)
at org.im4java.process.ProcessStarter.run(ProcessStarter.java:314)
at org.im4java.core.ImageCommand.run(ImageCommand.java:215)
... 15 common frames omitted