Получить URL статического веб-сайта AWS S3 bucket программным способом с помощью Java SDK v2

В документации по адресу https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html говорится, что существуют две основные формы, основанные на регионе:

  • bucket-name.s3-website-region.amazonaws.com
  • bucket-name.s3-website.region.amazonaws.com

(Обратите внимание на черту против точки перед region.) Список на https://docs.aws.amazon.com/general/latest/gr/rande.html это подтверждает.

Я использую AWS Java SDK v2. Я создаю некоторые ведра программно, а другие я просто использую S3Client.getBucketWebsite() чтобы получить информацию о веб-сайте ведра. Но GetBucketWebsiteResponse похоже, ничего с этим не связано.

Я бы предпочел не жестко кодировать список областей в моем коде, сопоставленных с конкретным стилем URL, который они используют. Есть ли способ получить статический URL-адрес веб-сайта для корзины, используя AWS SDK?

Обратите внимание, что мне известен отдельный вопрос. Как получить URL-адрес конечной точки веб-сайта AWS S3 через API? , но этот вопрос касается конечных точек API RESTful, а не статического хостинга веб-сайтов, как указано в ответе /questions/12428527/kak-poluchit-url-adres-konechnoj-tochki-veb-sajta-aws-s3-cherez-api/12428533#12428533 и его комментариях.

(Интересно из моих экспериментов, одна область, которая была задокументирована для использования формы bucket-name.s3-website-region.amazonaws.com был также доступен с помощью формы bucket-name.s3-website.region.amazonaws.com Возможно, AWS пытается стандартизировать форму точек. Тем не менее, было бы лучше снять все сомнения и положиться на SDK для какой-либо предпочтительной формы, если только нет официальной документации, гарантирующей, что точечная форма будет работать для всех регионов в будущем.)

2 ответа

На данный момент вы должны использовать S3Client.getBucketWebsite() а также S3Client.getBucketLocation() вместе с сопоставлением регионов для подготовки статического URL-адреса веб-сайта AWS S3, поскольку документация AWS официально не объявила о том, что обе записи (. и -) теперь могут работать взаимозаменяемо.

aws использует "." обозначение официально, так что мне решать ....

URL-адреса виртуального хостинга Amazon S3 используют следующий формат.

https://bucket-name.s3.Region.amazonaws.com/keyname

для справки:https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html

Другие вопросы по тегам