

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK for Ruby の開始方法
<a name="getting-started"></a>

SDK をインストール、セットアップ、使用して、 AWS リソースにプログラムでアクセスするための Ruby アプリケーションを作成する方法について説明します。

**Topics**
+ [による認証 AWS](credentials.md)
+ [SDK のインストール](setup-install.md)
+ [シンプルなアプリケーションの作成](hello.md)

# AWS SDK for Ruby AWS を使用した での認証
<a name="credentials"></a>

で開発 AWS するときに、コードが で認証される方法を確立する必要があります AWS のサービス。 AWS リソースへのプログラムによるアクセスは、環境と利用可能な AWS アクセスに応じてさまざまな方法で設定できます。

認証方法を選択して SDK 用に設定するには、*AWS SDK とツールのリファレンスガイド*の「[認証とアクセス](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)」を参照してください。

## コンソール認証情報の使用
<a name="using-con-creds"></a>

ローカル開発では、新しいユーザーが既存の AWS マネジメントコンソールのサインイン認証情報を使用して AWS サービスにプログラムでアクセスすることをお勧めします。ブラウザベースの認証後、 AWS は コマンドラインインターフェイス (AWS CLI) や AWS SDK for Ruby などのローカル開発ツールで動作する一時的な認証情報 AWS を生成します。

この方法を選択した場合は、「 [CLI を使用してコンソール認証情報を使用して AWS ローカル開発のためにログインする AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)」の手順に従います。

 AWS SDK for Ruby では、コンソール認証情報でログインを使用するために、アプリケーションに追加の Gem ( など`aws-sdk-signin`) は必要ありません。

## IAM Identity Center 認証の使用
<a name="using-iam-auth"></a>

この方法を選択した場合は、「*AWS SDK とツールのリファレンスガイド*」の「[IAM Identity Center 認証](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html)」の手順を完了します。その後、環境には次の要素が含まれている必要があります。
+ アプリケーションを実行する前に AWS アクセスポータルセッションを開始 AWS CLIするために使用する 。
+ SDK から参照できる設定値のセットを含む `[default]` プロファイルがある[共有 AWS`config` ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)。このファイルの場所を確認するには、*AWS SDK とツールのリファレンスガイド*の「[共有ファイルの場所](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)」を参照してください。
+  共有 `config` ファイルは [https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html) 設定を設定します。これにより、SDK AWS リージョン が AWS リクエストに使用するデフォルトが設定されます。このリージョンは、使用するリージョンが指定されていない SDK サービスリクエストに使用されます。
+  SDK は、リクエストを AWSに送信する前に、プロファイルの [SSO トークンプロバイダー設定](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#feature-sso-credentials-profile)を使用して認証情報を取得します。`sso_role_name` 値は、IAM Identity Center アクセス許可セットに接続された IAM ロールであり、アプリケーションで AWS のサービス 使用されている へのアクセスを許可します。

  次のサンプル `config` ファイルは、SSO トークンプロバイダー設定で設定されたデフォルトプロファイルを示しています。プロファイルの `sso_session` 設定は、指定された [`sso-session` セクション](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#section-session)を参照します。`sso-session` セクションには、 AWS アクセスポータルセッションを開始するための設定が含まれています。

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

 AWS SDK for Ruby では、IAM Identity Center 認証を使用するために、アプリケーションに追加の Gem ( `aws-sdk-sso`や など`aws-sdk-ssooidc`) は必要ありません。

### AWS アクセスポータルセッションを開始する
<a name="accessportal"></a>

アクセスするアプリケーションを実行する前に AWS のサービス、SDK が IAM Identity Center 認証を使用して認証情報を解決するためのアクティブな AWS アクセスポータルセッションが必要です。設定したセッションの長さによっては、アクセスが最終的に期限切れになり、SDK で認証エラーが発生します。 AWS アクセスポータルにサインインするには、 で次のコマンドを実行します AWS CLI。

```
aws sso login
```

ガイダンスに従い、デフォルトのプロファイルを設定している場合は、`--profile` オプションを指定してコマンドを呼び出す必要はありません。SSO トークンプロバイダー設定で名前付きプロファイルを使用している場合、コマンドは `aws sso login --profile named-profile` です。

既にアクティブなセッションがあるかどうかをオプションでテストするには、次の AWS CLI コマンドを実行します。

```
aws sts get-caller-identity
```

セッションがアクティブな場合、このコマンドへの応答により、共有 `config` ファイルに設定されている IAM Identity Center アカウントとアクセス許可のセットが報告されます。

**注記**  
既にアクティブな AWS アクセスポータルセッションがあり、 を実行している場合は`aws sso login`、認証情報を指定する必要はありません。  
サインインプロセスにより、データ AWS CLI へのアクセスを許可するように求められる場合があります。 AWS CLI は SDK for Python 上に構築されているため、アクセス許可メッセージには`botocore`名前のバリエーションが含まれている可能性があります。

## 詳細認証情報
<a name="credother"></a>

人間のユーザーとは、別名*人的 ID* と呼ばれ、人、管理者、デベロッパー、オペレーター、およびアプリケーションのコンシューマーを指します。 AWS 環境とアプリケーションにアクセスするには、ID が必要です。組織のメンバーである人間のユーザー、つまり、ユーザーや開発者は、*ワークフォースアイデンティティ*と呼ばれます。

アクセス時に一時的な認証情報を使用します AWS。人間のユーザーの ID プロバイダーを使用して、一時的な認証情報を提供するロールを引き受けることで、 AWS アカウントへのフェデレーションアクセスを提供できます。一元的なアクセス管理を行うには、 AWS IAM アイデンティティセンター (IAM Identity Center) を使用して、ご自分のアカウントへのアクセスと、それらのアカウント内でのアクセス許可を管理することをお勧めします。その他の代替案については、以下を参照してください。
+ ベストプラクティスの詳細については、*IAM ユーザーガイド*の「[IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)」を参照してください。
+ 短期 AWS 認証情報を作成するには、*IAM ユーザーガイド*の[「一時的なセキュリティ認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」を参照してください。
+  AWS SDK for Ruby 認証情報プロバイダーチェーン、および SDK によって一連の認証方法が自動的に試行される方法については、「」を参照してください[認証情報プロバイダーチェーン](credential-providers.md#credchain)。
+  AWS SDK 認証情報プロバイダーの設定については、「 SDK およびツールリファレンスガイド」の[「標準化された認証情報プロバイダー](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)」を参照してください。 *AWS SDKs *

# AWS SDK for Ruby のインストール
<a name="setup-install"></a>

このセクションには、 AWS SDK for Ruby の前提条件とインストール手順が含まれています。

## 前提条件
<a name="aws-ruby-sdk-prerequisites"></a>

 AWS SDK for Ruby を使用する前に、 で認証する必要があります AWS。認証の設定の詳細については、「[AWS SDK for Ruby AWS を使用した での認証](credentials.md)」を参照してください。

## SDK のインストール
<a name="installing-the-sdk"></a>

 AWS SDK for Ruby は、Ruby Gem と同様にインストールできます。gem は [RubyGems](https://rubygems.org/gems/aws-sdk/) で購入できます。 AWS SDK for Ruby はモジュール式に設計されており、 で区切られています AWS のサービス。`aws-sdk`gem 全体のインストールはサイズが大きく、1 時間以上かかる場合があります。

 AWS のサービス 使用する にのみ Gem をインストールすることをお勧めします。これらは のような名前`aws-sdk-service_abbreviation`で、完全なリストは AWS SDK for Ruby README ファイルの [Supported Services](https://github.com/aws/aws-sdk-ruby/#supported-services) テーブルにあります。たとえば、Amazon S3 サービスとインターフェイスするための gem は、[https://rubygems.org/gems/aws-sdk-s3](https://rubygems.org/gems/aws-sdk-s3) で直接入手できます。

### Ruby バージョンマネージャー (RVM)
<a name="installing-rvm"></a>

システム Ruby を使用する代わりに、次のような Ruby バージョンマネージャーの使用をお勧めします。
+ [RVM](http://rvm.io/)
+ [chruby](https://github.com/postmodern/chruby)
+ [rbenv](https://github.com/rbenv/rbenv)

例えば、Amazon Linux 2 オペレーティングシステムを使用している場合、次のコマンドを使用して RVM を更新し、使用可能な Ruby バージョンを一覧表示し、 AWS SDK for Ruby で開発に使用するバージョンを選択できます。最低限必要な Ruby バージョンは 2.5 です。

```
$ rvm get head
$ rvm list known
$ rvm install ruby-3.1.3
$ rvm --default use 3.1.3
```

### バンドラー
<a name="bundler"></a>

 [Bundler](http://bundler.io/) を使用する場合、次のコマンドは Amazon S3 用の AWS SDK for Ruby Gem をインストールします。

1. バンドラーをインストールして`Gemfile`を作成します。

   ```
   $ gem install bundler
   $ bundle init
   ```

1. 作成した を開き`Gemfile`、コードが使用する AWS サービス Gem ごとに`gem`行を追加します。Amazon S3 の例に従って作業する場合は、ファイルの末尾に次のテキスト行を追加します。

   ```
   gem "aws-sdk-s3"
   ```

1. Gemfile を保存する

1. お使いの`Gemfile`で指定されている依存関係をインストールします。

   ```
   $ bundle install
   ```

# AWS SDK for Ruby を使用したシンプルなアプリケーションの作成
<a name="hello"></a>

 AWS SDK for Ruby を使用して Amazon S3 に挨拶します。次の例では、すべての Amazon S3 バケットのリストを表示します。

## コードの記述
<a name="aws-ruby-sdk-hello-world-code"></a>

次のコードをコピーして、新しいソースファイルに貼り付けます。ファイルを `hello-s3.rb` と名付けます。

```
require 'aws-sdk-s3'

# Wraps Amazon S3 resource actions.
class BucketListWrapper
  attr_reader :s3_resource

  # @param s3_resource [Aws::S3::Resource] An Amazon S3 resource.
  def initialize(s3_resource)
    @s3_resource = s3_resource
  end

  # Lists buckets for the current account.
  #
  # @param count [Integer] The maximum number of buckets to list.
  def list_buckets(count)
    puts 'Found these buckets:'
    @s3_resource.buckets.each do |bucket|
      puts "\t#{bucket.name}"
      count -= 1
      break if count.zero?
    end
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't list buckets. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  wrapper = BucketListWrapper.new(Aws::S3::Resource.new)
  wrapper.list_buckets(25)
end

run_demo if $PROGRAM_NAME == __FILE__
```

AWS SDK for Ruby はモジュール式に設計されており、 で区切られています AWS のサービス。gem をインストールすると、Ruby ソースファイルの先頭にある `require` ステートメントで、Amazon S3 サービス用の AWS SDK クラスとメソッドがインポートされます。利用可能な AWS サービス Gem の完全なリストについては、 AWS SDK for Ruby README ファイルの[サポート対象サービス](https://github.com/aws/aws-sdk-ruby/#supported-services)表を参照してください。

```
require 'aws-sdk-s3'
```

## プログラムの実行
<a name="aws-ruby-sdk-hello-world-running"></a>

Ruby プログラムを実行するには、コマンドプロンプトを開きます。Ruby プログラムを実行する一般的なコマンド構文は次のとおりです。

```
ruby [source filename] [arguments...]
```

このサンプルコードでは引数を使用しません。このコードを実行するには、コマンドプロンプトで以下を入力します。

```
$ ruby hello-s3.rb
```

## Windows ユーザー向けの注意事項
<a name="aws-ruby-sdk-quick-start-windows"></a>

Windows の SSL 証明書で Ruby コードを実行すると、次のようなエラーが表示されまる場合があります。

```
C:\Ruby>ruby buckets.rb
C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Seahorse::Client::NetworkingError)
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `block in connect'

         from C:/Ruby200-x64/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `connect'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:857:in `start'
...
```

この問題を修正するには、最初の AWS 呼び出しの前のどこかで、Ruby ソースファイルに次の行を追加します。

```
Aws.use_bundled_cert!
```

Ruby プログラムで `aws-sdk-s3` gem のみを使用している場合は、バンドルされた証明書を使用するために `aws-sdk-core` gem を追加する必要があります。

## 次の手順
<a name="aws-ruby-sdk-hello-world-next-steps"></a>

その他の多くの Amazon S3 オペレーションをテストするには、GitHub で [AWS のコードサンプルリポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/ruby/example_code//s3)を確認してください。