Closed7

AWSのサービス名称(正式)をAPIで取得してみる

かいものかいもの

スクレイピングなんて不安定。PublicなAPIで取得できる方法を模索する
(AWSのOfficialアイコンをzipではなく、URLで取得するためには正式なサービス名を知る必要がある)

https://docs.aws.amazon.com/images/service-icons/Arch_<正式なサービス名>_32.svg

AWSの製品一覧をデベロッパーツールで見てみるとそれっぽいものがみつかった

https://aws.amazon.com/api/dirs/items/search?item.directoryId=aws-products&sort_by=item.additionalFields.productNameLowercase&sort_order=asc&size=15&item.locale=ja_JP&q_operator=AND&tags.id=aws-products%23type%23service%7Caws-products%23type%23feature```
かいものかいもの

JSONの構成は

{
  items: []{
    {
      item:{
         "id": "aws-products#amazon-interactive-video-service",
      "locale": "ja_JP",
      "directoryId": "aws-products",
      "name": "amazon-interactive-video-service",
      "author": "awslocservice",
      "createdBy": "guifen",
      "lastUpdatedBy": "awslocservice",
      "dateCreated": "2021-12-01T06:11:38+0000",
      "dateUpdated": "2022-12-06T17:24:37+0000",
      "additionalFields": {
        "pricingUrl": "https://aws.amazon.com/ivs/pricing/?did=ap_card&trk=ap_card",
        "freeTierAvailability": "<p>&#160;</p>",
        "productSummary": "魅力的なライブストリーミング体験を構築",
        "launchDate": "2020-07-15",
        "productUrl": "https://aws.amazon.com/ivs/?did=ap_card&trk=ap_card",
        "productName": "Amazon Interactive Video Service",
        "productNameLowercase": "amazon interactive video service",
        "productCategory": "メディアサービス"
      },
      tags:[]}
  }
}
かいものかいもの

'.items[].item.name'とかだと、大文字小文字の情報が無視されてるのでちょっとだめ。
例えば、AWS RoboMakerなのか AWS Robomakerなのか機械的に判定できない

かいものかいもの

AWS Supply Chain Supply Planning (近日公開予定)
みたいに、GA前のものだと、ノイズが追加されてる
リリース済み or notを判定できそうな .items[].tagsは無さそうなので、カッコつき文字は除去するのが良さそう

かいものかいもの

これでとれる

const query =async()=>{
const result = []
const page_size = 100
let page=1
while(true){
  const res = await fetch(`https://aws.amazon.com/api/dirs/items/search?item.directoryId=aws-products&sort_by=item.additionalFields.productNameLowercase&sort_order=asc&size=${page_size}&item.locale=en_US&q_operator=AND&tags.id=aws-products%23type%23service%7Caws-products%23type%23feature&page=${page}`)
  const data = await res.json()
  result.push(data.items)
  page++;
  if(data.metadata.count < page_size) break;
}
return result.flat()
}
query().then((d)=>{
  const names = d.map(a=>a.item?.additionalFields?.productName)
  const services = [...new Set(names.map(a=>a.replace(/\(.*?\)/g, '').trim().replace(/\s/g,"-")))]
services.map(s=>console.log(`https://docs.aws.amazon.com/images/service-icons/Arch_${s}_32.svg`))

})
かいものかいもの

存在しないものもある。まだ、最適化できそうだけど一旦おしまい

https://docs.aws.amazon.com/images/service-icons/Arch_Amazon-VPC-Lattice_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_Amazon-WorkDocs_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_Amazon-WorkMail_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_Amazon-WorkSpaces-Family_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_Amazon-WorkSpaces-Thin-Client_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_Apache-MXNet-on-AWS_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_Apache-Spark-support-on-Amazon-Athena_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-Application-Migration-Service_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_Automated-data-prep-for-Amazon-QuickSight-Q_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-Amplify_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-Amplify-Studio_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-App-Mesh_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-App-Runner_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-App2Container_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-AppFabric_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-Application-Composer_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-Application-Discovery-Service_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-AppSync_32.svg
https://docs.aws.amazon.com/images/service-icons/Arch_AWS-Artifact_32.svg

このスクラップは2023/12/29にクローズされました