[Amazon FSx for NetApp ONTAP] ONTAP S3 の マルチプロトコルアクセスを試してみた

データ分析の時に役立ちそう
2023.11.06

Storage GatewayみたいにSMBやNFSでS3上のデータを操作したい

こんにちは、のんピ(@non____97)です。

皆さんはStorage GatewayみたいにSMBやNFSでS3上のデータを操作したいしたいなと思ったことはありますか? 私はあります。

その願いはONTAP S3のマルチプロトコルアクセス(Data Duality)で少しだけ叶えることができます。

こちらはONTAP 9.12.1から追加された機能で、Amazon FSx for NetApp ONTAP(以降FSxN)上でS3に対応したマルチプロトコルでアクセス可能なボリュームを作成が可能となります。

ざっくりとした概要は以下記事でも紹介しているので、ご覧ください。

この記事ではONTAP S3とONTAP S3のData Dualityについて、もう少し深掘りします。

いきなりまとめ

  • ONTAP S3はONTAP上で動作するAmazon S3互換のオブジェクトストレージ
  • 通常のS3バケットと異なり、アクセス時にエンドポイントURLを指定する必要がある
  • サポートされているS3のAPIや連携可能なONTAPの機能は事前に確認しておこう
  • NFSやSMBでアクセス可能なボリュームに対して、S3でのアクセスも可能
    • NFS/SMB/S3と異なるプロトコルでアクセスが必要なデータを、それぞれのプロトコルにコピーするという手間がなくなる
  • マルチプロトコルを有効化しているONTAP S3のS3バケットにS3のAPIでアクセスする際はネームマッピングが必要

ONTAP S3とは

概要

ONTAP S3とは「ONTAP上で動作するAmazon S3互換のオブジェクトストレージ」のことです。

以下スライドのように、FSxNが既存のS3バケットと連携するのではなく、FSxN上でS3互換のオブジェクトストレージが動作します。

ONTAP S3のバケットの実態はFlexGroupです。FlexGroupの詳細は以下記事をご覧ください。

アクセス方法

通常、ONTAP S3のS3バケットを含むFlexGroupボリュームへのNFSやSMBを使ったアクセスは許可されていません。

アクセスする際はS3のAPIを使用します。その時はONTAP S3上で発行されたユーザーのアクセスキーとシークレットアクセスキーを使用します。

また、アクセスする際はエンドポイントURLとして、FSxNのSVMの管理エンドポイントを指定する必要があります。

そのため、AWSのマネージドサービスとの連携は少し不得手です。ALBのアクセスログをFSxN上のS3バケットに指定するといったことはできません。

ONTAP S3でサポートしているS3のAPI

ONTAP S3はS3互換のストレージであるため、多くのS3 REST APIをサポートしています。

以下NetApp公式ドキュメントにONTAP S3でサポートしているS3のAPIが記載されているので、チェックしてみてください。

ONTAP S3がサポートしているONTAPの機能

ONTAP S3でStorage Efficiencyを効かせたり、QoSを設定することは可能です。

ただし、Snapshotの取得やFlexCloneの作成などはできません。

どの機能がサポートされていて、どの機能がサポートされていないかは以下NetApp公式ドキュメントに記載があります。

ONTAP S3の設定フロー

FSxNにおいて、ONTAP S3を設定する際のフローは以下の通りです。

  1. object-store-server の作成
  2. ONTAP S3のユーザーの作成
  3. ONTAP S3のグループの作成と権限の割り当て
  4. ONTAP S3のバケットの作成

実際の作成手順は以下NetApp公式ドキュメントをご覧ください。

ONTAP S3のData Dualityとは

概要

ONTAP S3のData Dualityとは、NFSやSMBでアクセス可能なボリュームに対して、S3でのアクセスも可能とする機能です。

この機能によって、NFS/SMB/S3と異なるプロトコルでアクセスが必要なデータを、それぞれのプロトコルにコピーするという手間がなくなります。

ユースケースとして「NFSクライアントから収集したデータをS3を中心としたデータ分析基盤と連携する」などが挙げられます。NetApp公式ドキュメントではAWS SageMakerとの連携が紹介されていました。

また、S3 APIのみの場合はオブジェクトの一部を編集する場合は「オブジェクトのダウンロード」→「編集」→「アップロード」のステップが必要でしたが、NFSやSMBを使えば直接編集が可能になります。

ONTAP S3のData Dualityのポイントは「既存のONTAP S3バケットに対してNFSやSMBによるアクセスを追加する」のではなく、「既存のNFSやSMBボリュームに対してONTAP S3のバケットをマッピングする」ところです。主体はNFSやSMBのボリュームとなります。

アクセス方法

マルチプロトコルを有効化しているONTAP S3のS3バケットにS3のAPIでアクセスする際は、NFSとSMBのマルチプロトコルアクセスを実現するときと同様にネームマッピングが必要となります。S3からNFS、S3からSMBどちらのプロトコルへのネームマッピングも可能です。

ネームマッピングの詳細は以下記事とNetAppのKBをご覧ください。

制約事項と通常のONTAP S3との違い

NFSやSMBのボリュームに対してS3アクセスを許可している形であるため、通常のONTAP S3と制約事項が異なります。

例えば、以下のようなものが挙げられます。

  • Snapshotの取得および、SnapMirrorによるデータ転送が可能
  • S3のアクセス監査は行うことができない
  • プレフィックスがx-amz-metaのリクエストヘッダーは無視される
  • PUT ObjectとMultipart Initiateでプレフィックスがx-amz-taggingのヘッダーは無視される
  • 既存のファイルでタグを更新するリクエストは拒否される
  • バージョン管理をバケットのマッピング設定で指定することはできない
  • マルチパート関連の処理はサポートされていない
  • S3の名前は1024 Byteに制限されているため、長いパス名を持つファイルにS3 APIを使用してアクセスすることはできない
  • ファイル名とディレクトリ名は255文字に制限されているため、オブジェクト名として連続する255文字以外の文字(/)を使用できない
  • バックスラッシュで区切られたSMBパス名は、S3上ではスラッシュではなく、オブジェクト名として認識される
  • 有効なS3オブジェクト名のペアの一部は、マッピングされたNASディレクトリツリーに共存できない

ONTAP S3のData Duality設定フロー

FSxNにおいて、ONTAP S3のData Dualityを設定する際のフローは以下の通りです。

  1. ボリュームの作成
  2. NFS or SMBのサーバー起動 & ファイル共有の作成
  3. object-store-server の作成
  4. ONTAP S3のユーザーの作成
  5. ONTAP S3のグループの作成と権限の割り当て
  6. ONTAP S3のユーザーとNFS or SMBユーザーのネームマッピング
  7. ONTAP S3のバケットの作成

実際の作成手順は以下NetApp公式ドキュメントをご覧ください。

通常のONTAP S3のS3バケットを作成してみる

証明書の発行

ONTAP S3のS3バケットにHTTPSで通信してみたかったので証明書を用意します。

ONTAP上で認証局を立てることができるので自己署名証明書を作成します。

FSxN上でデフォルトでインストールされている証明書は以下のとおりです。

::> security certificate show
Vserver    Serial Number   Certificate Name                       Type
---------- --------------- -------------------------------------- ------------
FsxId03e6b8146fca5e858
           3F864DC175CE5787F29AF1517E121B21
                           clientCa1                              client-ca
    Certificate Authority: Amazon FSx Root CA 1 for us-east-1
          Expiration Date: Wed Aug 08 21:15:27 3021

FsxId03e6b8146fca5e858
           3F864DC175CE5787F29AF1517E121B21
                           serverCa1                              server-ca
    Certificate Authority: Amazon FSx Root CA 1 for us-east-1
          Expiration Date: Wed Aug 08 21:15:27 3021

FsxId03e6b8146fca5e858
           FC86BD1526879B4A02CA2CFD832BB379
                           clientCa0                              client-ca
    Certificate Authority: Amazon FSx Root CA 1 for us-east-1
          Expiration Date: Sun Aug 21 14:19:16 2033

FsxId03e6b8146fca5e858
           FC86BD1526879B4A02CA2CFD832BB379
                           serverCa0                              server-ca
    Certificate Authority: Amazon FSx Root CA 1 for us-east-1
          Expiration Date: Sun Aug 21 14:19:16 2033

svm        1790EA6BFE4A853C
                           svm_1790EA6BFE4A853C                   server
    Certificate Authority: svm
          Expiration Date: Wed Oct 23 02:33:29 2024

5 entries were displayed.

まず、CAを作成します。

CAを作成する際はsecurity certificate create-typeroot-caを指定します。

# CAの作成
::> security certificate create -vserver svm -type root-ca -common-name svm_ca

The certificate's generated name for reference: svm_ca_1794ADFCA608B978_svm_ca

# 作成した証明書の確認
::> security certificate show -common-name svm_ca
Vserver    Serial Number   Certificate Name                       Type
---------- --------------- -------------------------------------- ------------
svm        1794ADFCA608B978
                           svm_ca_1794ADFCA608B978_svm_ca         root-ca
    Certificate Authority: svm_ca
          Expiration Date: Mon Nov 04 08:51:00 2024

svm        1794ADFCA608B978
                           svm_ca_1794ADFCA608B978                client-ca
    Certificate Authority: svm_ca
          Expiration Date: Mon Nov 04 08:51:00 2024

svm        1794ADFCA608B978
                           svm_ca                                 server-ca
    Certificate Authority: svm_ca
          Expiration Date: Mon Nov 04 08:51:00 2024

3 entries were displayed.

# 作成した証明書の詳細の確認
::> security certificate show -common-name svm_ca -instance
                             Vserver: svm
                    Certificate Name: svm_ca_1794ADFCA608B978_svm_ca
          FQDN or Custom Common Name: svm_ca
        Serial Number of Certificate: 1794ADFCA608B978
               Certificate Authority: svm_ca
                 Type of Certificate: root-ca
 Size of Requested Certificate(bits): 2048
              Certificate Start Date: Sun Nov 05 08:51:00 2023
         Certificate Expiration Date: Mon Nov 04 08:51:00 2024
              Public Key Certificate: -----BEGIN CERTIFICATE-----
                                      MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
                                      AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
                                      ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
                                      SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
                                      E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
                                      dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
                                      i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
                                      mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
                                      TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
                                      gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
                                      95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
                                      wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
                                      eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
                                      6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
                                      ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
                                      nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
                                      a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
                                      4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
                                      -----END CERTIFICATE-----
        Country Name (2 letter code): US
  State or Province Name (full name):
           Locality Name (e.g. city):
    Organization Name (e.g. company):
    Organization Unit (e.g. section):
        Email Address (Contact Name):
                            Protocol: SSL
                    Hashing Function: SHA256
                             Subtype: -

                             Vserver: svm
                    Certificate Name: svm_ca_1794ADFCA608B978
          FQDN or Custom Common Name: svm_ca
        Serial Number of Certificate: 1794ADFCA608B978
               Certificate Authority: svm_ca
                 Type of Certificate: client-ca
 Size of Requested Certificate(bits): 2048
              Certificate Start Date: Sun Nov 05 08:51:00 2023
         Certificate Expiration Date: Mon Nov 04 08:51:00 2024
              Public Key Certificate: -----BEGIN CERTIFICATE-----
                                      MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
                                      AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
                                      ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
                                      SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
                                      E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
                                      dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
                                      i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
                                      mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
                                      TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
                                      gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
                                      95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
                                      wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
                                      eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
                                      6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
                                      ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
                                      nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
                                      a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
                                      4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
                                      -----END CERTIFICATE-----
        Country Name (2 letter code): US
  State or Province Name (full name):
           Locality Name (e.g. city):
    Organization Name (e.g. company):
    Organization Unit (e.g. section):
        Email Address (Contact Name):
                            Protocol: SSL
                    Hashing Function: SHA256
                             Subtype: -

                             Vserver: svm
                    Certificate Name: svm_ca
          FQDN or Custom Common Name: svm_ca
        Serial Number of Certificate: 1794ADFCA608B978
               Certificate Authority: svm_ca
                 Type of Certificate: server-ca
 Size of Requested Certificate(bits): 2048
              Certificate Start Date: Sun Nov 05 08:51:00 2023
         Certificate Expiration Date: Mon Nov 04 08:51:00 2024
              Public Key Certificate: -----BEGIN CERTIFICATE-----
                                      MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
                                      AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
                                      ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
                                      SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
                                      E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
                                      dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
                                      i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
                                      mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
                                      TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
                                      gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
                                      95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
                                      wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
                                      eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
                                      6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
                                      ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
                                      nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
                                      a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
                                      4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
                                      -----END CERTIFICATE-----
        Country Name (2 letter code): US
  State or Province Name (full name):
           Locality Name (e.g. city):
    Organization Name (e.g. company):
    Organization Unit (e.g. section):
        Email Address (Contact Name):
                            Protocol: SSL
                    Hashing Function: SHA256
                             Subtype: -

3 entries were displayed.

CAの秘密鍵のパスフレーズなどは要求されませんでした。

続いて、ONTAP S3で使用する証明書用のCSRをsecurity certificate generate-csrで作成します。

CNとSANはSVMの管理エンドポイント名とします。これはONTAP S3をサポートしているLIFがnfs_smb_management_1というLIFでサポートしているためです。

::> network interface show -services data-s3-server -fields services, data-protocol
vserver lif                  services                                                                                    data-protocol
------- -------------------- ------------------------------------------------------------------------------------------- -------------
svm     nfs_smb_management_1 data-core,data-nfs,data-cifs,management-ssh,management-https,data-s3-server,data-dns-server nfs,cifs,s3

CSRを作成すると秘密鍵も生成されます。

# CSRの作成
::> security certificate generate-csr -common-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -dns-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com

Certificate Signing Request :
-----BEGIN CERTIFICATE REQUEST-----
MIIDMDCCAhgCAQAwUTFPME0GA1UEAxNGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZz
LTAzZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaEP6X54++epdzBhgMZBZhp
oXzJ6W+E/Ed85EbF5kljPxTUZs5nt1nkzj6X8tWcIE1hxV+bY3emu4YA4Fuxb1lQ
DR1wmNDzNlOI2zhoUjqRPULFLkAasnMOVlxTHp8shGYmrAp/nWBgdjB0S6YYBfWr
95Ci+5PvFWEn8HUJrKdKXc+vcKCjgVW9LdYa3e8tWzgXT3c4zae0i03DK5rBIdLN
zTS+ZlqZX7/Q+JvVL0O02/86h6w6A4daLmOtnoal5NdxiH9MkybGqy6Y5dYYizCU
JGkLBrdBTzCDn8cfnDw2JjIC1XAcCrxwaX/49oSm/31Ts7jmoj+iyrUoRdEZv1cC
AwEAAaCBmTCBlgYJKoZIhvcNAQkOMYGIMIGFMFQGA1UdEQEB/wRKMEiCRnN2bS0w
MDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFz
dC0xLmFtYXpvbmF3cy5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG
AQUFBwMCBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAQYiBzhZkymCjVLkN
n/0f/lopmQFsxHPYHxDZhPg93dKRkDxOSe+oJ0NFI85zaLxRyXNYRxNsiAK5nbBd
d5kyINJ9KqDbgggiGTnEIpJJR7sFWMxu37689wIGOFZu1Qaqj203K7wD6JxddnXG
Z4dOFibhzU2zOfXj1T53vc0ysT9vNLi8JVeKvXPmQtZilWkBTgMCFacmz/4l1IiS
G6f30VNVNmuH7j2g8TwZrw0USnMzZ2mwIDdFGewY/vV2bB2ba67RT6/a1qF3StBy
PF1XeNzSBSeL3gGg2kPaIXfY8+kZsEGkJ3lw4NNXOUEabQ08GXs4Y3at7yDHUY2i
KF2q5g==
-----END CERTIFICATE REQUEST-----


Private Key :
-----BEGIN PRIVATE KEY-----
.
.
(中略)
.
.
-----END PRIVATE KEY-----

Note: Please keep a copy of your certificate request and private key for future reference.

security certificate signでCSRに署名して証明書を発行します。署名する際には署名するCAとCSRを入力します。

::> security certificate sign -vserver svm -ca svm_ca -ca-serial 1794ADFCA608B978 -expire-days 3 -format PEM -hash-function SHA256

Please enter Certificate Signing Request(CSR): Press <Enter> when done
-----BEGIN CERTIFICATE REQUEST-----
MIIDMDCCAhgCAQAwUTFPME0GA1UEAxNGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZz
LTAzZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJaEP6X54++epdzBhgMZBZhp
oXzJ6W+E/Ed85EbF5kljPxTUZs5nt1nkzj6X8tWcIE1hxV+bY3emu4YA4Fuxb1lQ
DR1wmNDzNlOI2zhoUjqRPULFLkAasnMOVlxTHp8shGYmrAp/nWBgdjB0S6YYBfWr
95Ci+5PvFWEn8HUJrKdKXc+vcKCjgVW9LdYa3e8tWzgXT3c4zae0i03DK5rBIdLN
zTS+ZlqZX7/Q+JvVL0O02/86h6w6A4daLmOtnoal5NdxiH9MkybGqy6Y5dYYizCU
JGkLBrdBTzCDn8cfnDw2JjIC1XAcCrxwaX/49oSm/31Ts7jmoj+iyrUoRdEZv1cC
AwEAAaCBmTCBlgYJKoZIhvcNAQkOMYGIMIGFMFQGA1UdEQEB/wRKMEiCRnN2bS0w
MDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFz
dC0xLmFtYXpvbmF3cy5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG
AQUFBwMCBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAQYiBzhZkymCjVLkN
n/0f/lopmQFsxHPYHxDZhPg93dKRkDxOSe+oJ0NFI85zaLxRyXNYRxNsiAK5nbBd
d5kyINJ9KqDbgggiGTnEIpJJR7sFWMxu37689wIGOFZu1Qaqj203K7wD6JxddnXG
Z4dOFibhzU2zOfXj1T53vc0ysT9vNLi8JVeKvXPmQtZilWkBTgMCFacmz/4l1IiS
G6f30VNVNmuH7j2g8TwZrw0USnMzZ2mwIDdFGewY/vV2bB2ba67RT6/a1qF3StBy
PF1XeNzSBSeL3gGg2kPaIXfY8+kZsEGkJ3lw4NNXOUEabQ08GXs4Y3at7yDHUY2i
KF2q5g==
-----END CERTIFICATE REQUEST-----


Signed Certificate :
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw
MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2
YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv
hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ
8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT
7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa
mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3
QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj
gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz
ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV
HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud
EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA
FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya
6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3
azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg
HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U
DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS
6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX
J0AEf4F1J9bv
-----END CERTIFICATE-----

発行した証明書をsecurity certificate installでSVMにインストールします。インストールする際はCSR作成時に出力された秘密鍵を入力します。

::> security certificate install -type server -vserver svm

Please enter Certificate: Press <Enter> when done
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw
MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2
YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv
hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ
8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT
7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa
mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3
QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj
gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz
ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV
HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud
EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA
FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya
6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3
azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg
HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U
DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS
6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX
J0AEf4F1J9bv
-----END CERTIFICATE-----


Please enter Private Key: Press <Enter> when done
-----BEGIN PRIVATE KEY-----
.
.
(中略)
.
.
-----END PRIVATE KEY-----


Enter certificates of certification authorities (CA) which form the certificate chain of the server certificate. This
starts with the issuing CA certificate of the server certificate and can range up to the root CA certificate.

Do you want to continue entering root and/or intermediate certificates {y|n}: n

You should keep a copy of the private key and the CA-signed digital certificate for future reference.

The installed certificate's CA and serial number for reference:
CA: svm_ca
serial: 1794E3AF283E4D9F

The certificate's generated name for reference: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com

証明書がインストールされたことを確認します。

::> security certificate show -cert-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
Vserver    Serial Number   Certificate Name                       Type
---------- --------------- -------------------------------------- ------------
svm        1794E3AF283E4D9F
                           svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
                                                                  server
    Certificate Authority: svm_ca
          Expiration Date: Thu Nov 09 01:15:00 2023

::> security certificate show -cert-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -instance
                             Vserver: svm
                    Certificate Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
          FQDN or Custom Common Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
        Serial Number of Certificate: 1794E3AF283E4D9F
               Certificate Authority: svm_ca
                 Type of Certificate: server
 Size of Requested Certificate(bits): 2048
              Certificate Start Date: Mon Nov 06 01:15:00 2023
         Certificate Expiration Date: Thu Nov 09 01:15:00 2023
              Public Key Certificate: -----BEGIN CERTIFICATE-----
                                      MIIDxTCCAq2gAwIBAgIIF5Tjryg+TZ8wDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
                                      AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDYwMTE1MDBaFw0yMzExMDkw
                                      MTE1MDBaMFExTzBNBgNVBAMTRnN2bS0wMDkzYzRkNTgyMjVmODA5Yi5mcy0wM2U2
                                      YjgxNDZmY2E1ZTg1OC5mc3gudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20wggEiMA0G
                                      CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWhD+l+ePvnqXcwYYDGQWYaaF8yelv
                                      hPxHfORGxeZJYz8U1GbOZ7dZ5M4+l/LVnCBNYcVfm2N3pruGAOBbsW9ZUA0dcJjQ
                                      8zZTiNs4aFI6kT1CxS5AGrJzDlZcUx6fLIRmJqwKf51gYHYwdEumGAX1q/eQovuT
                                      7xVhJ/B1CaynSl3Pr3Cgo4FVvS3WGt3vLVs4F093OM2ntItNwyuawSHSzc00vmZa
                                      mV+/0Pib1S9DtNv/OoesOgOHWi5jrZ6GpeTXcYh/TJMmxqsumOXWGIswlCRpCwa3
                                      QU8wg5/HH5w8NiYyAtVwHAq8cGl/+PaEpv99U7O45qI/osq1KEXRGb9XAgMBAAGj
                                      gdMwgdAwVAYDVR0RAQH/BEowSIJGc3ZtLTAwOTNjNGQ1ODIyNWY4MDliLmZzLTAz
                                      ZTZiODE0NmZjYTVlODU4LmZzeC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbTAOBgNV
                                      HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAkGA1Ud
                                      EwQCMAAwHQYDVR0OBBYEFKIQJMTwgLjqSi5N3xm6FkR6o6H4MB8GA1UdIwQYMBaA
                                      FAj+95pA7ItS677SE2hSDdCRwd2rMA0GCSqGSIb3DQEBCwUAA4IBAQAHKtZnKMya
                                      6p5kuyrc7zLh2Hy7BPh9/HxaDd2a7dFfdG2mEkWJludMfyTzR0CW5pTVGNXOfoN3
                                      azSlhrTEj7FlGMehTVGrc9t6WLpP+WRzsofCZcvoiHutbHwVcifGPTs+cV6FqUbg
                                      HxNof34woUYUjLaY/bR2qfL5FGIRl9HuyCYmw0PJMoFDkjE8EBSxQH4zq20BNR/U
                                      DtyMdTLkIGNk0+e6fWzGaRCpmDsAu6w9VtDDom4jOsgI8FVLtP7kri/m0Tqts8KS
                                      6IYiinl6rSjrDfuCfGMLGefgn9kSmlYgJulS1Xo5sJkD54NryGaWeln/amgLC9MX
                                      J0AEf4F1J9bv
                                      -----END CERTIFICATE-----
        Country Name (2 letter code):
  State or Province Name (full name):
           Locality Name (e.g. city):
    Organization Name (e.g. company):
    Organization Unit (e.g. section):
        Email Address (Contact Name):
                            Protocol: SSL
                    Hashing Function: SHA256
                             Subtype: -

object-store-server の作成

次に、object-store-server の作成をします。

object-store-server createでobject-store-server を作成します。

作成する際に事前に用意した証明書を指定します。

::> object-store-server create -object-store-server svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com -is-http-enabled false -is-https-enabled true -certificate-name svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
  (vserver object-store-server create)

::> object-store-server show
  (vserver object-store-server show)

Vserver: svm

           Object Store Server Name: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
               Administrative State: up
                       HTTP Enabled: false
             Listener Port For HTTP: 80
                      HTTPS Enabled: true
     Secure Listener Port For HTTPS: 443
  Certificate for HTTPS Connections: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
                  Default UNIX User: pcuser
               Default Windows User: -
                            Comment:

ONTAP S3のユーザーの作成

ONTAP S3でアクセスする際に使用するユーザーをobject-store-server user createで作成します。

# ユーザーの作成
::> object-store-server user create -vserver svm -user s3-user
  (vserver object-store-server user create)

# 作成したユーザーの確認
::> object-store-server user show -instance
  (vserver object-store-server user show)

                               Vserver Name: svm
              Object Store Server User Name: root
                Object Store Server User ID: 0
       Object Store Server User Description: Root User
Access Key for the Object Store Server User: -

                               Vserver Name: svm
              Object Store Server User Name: s3-user
                Object Store Server User ID: 2
       Object Store Server User Description:
Access Key for the Object Store Server User: XEFD2323G5QAL53VC56C
2 entries were displayed.

# シークレットアクセスキーを表示するために advanced に権限レベルを変更
::> set advanced

Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp personnel.
Do you want to continue? {y|n}: y

# シークレットアクセスキーの確認
::*> object-store-server user show -instance
  (vserver object-store-server user show)

                               Vserver Name: svm
              Object Store Server User Name: root
                Object Store Server User ID: 0
       Object Store Server User Description: Root User
Access Key for the Object Store Server User: -
Secret Key for the Object Store Server User: -

                               Vserver Name: svm
              Object Store Server User Name: s3-user
                Object Store Server User ID: 2
       Object Store Server User Description:
Access Key for the Object Store Server User: XEFD2323G5QAL53VC56C
Secret Key for the Object Store Server User: <省略>
2 entries were displayed.

# 権限レベルを元に戻す
::*> set admin

ONTAP S3のグループの作成と権限の割り当て

作成したユーザーにS3バケットへのアクセス権限を付与するために、object-store-server group createでグループを作成します。

# 存在するポリシーの確認
::> object-store-server policy show
  (vserver object-store-server policy show)
Vserver     Name               Is Read-Only Comment
----------- ------------------ ------------ ----------------
svm         FullAccess         true         Read Only Policy: To allow full access to S3 resources
svm         NoS3Access         true         Read Only Policy: To deny access to all S3 resources
svm         ReadOnlyAccess     true         Read Only Policy: To allow read-only access to S3 resources
3 entries were displayed.

# グループの作成
::> object-store-server group create -name s3-group-fullaccess -users s3-user -policies FullAccess
  (vserver object-store-server group create)

# 作成したグループの確認
::>  object-store-server group show
  (vserver object-store-server group show)
Vserver     Group ID  Group Name     Users            Policies
----------- --------- -------------- ---------------- -------------------
svm                 2 s3-group-fullaccess
                                     s3-user          FullAccess

::> object-store-server group show -instance
  (vserver object-store-server group show)

   Vserver Name    :svm
   Group ID        :2
   Group Name      :s3-group-fullaccess
   Users           :s3-user
   Policies        :FullAccess
   Comment         :

グループにアタッチするポリシーは既に存在するFullAccessを使用しましたが、object-store-server policy createobject-store-server policy statement createを使ってポリシーを新規に作成することも可能です。

ポリシーstatementの作成例

::> vserver object-store-server policy statement create -vserver vs1 -policy Policy_1 -effect allow  -actions GetObject,PutObject,DeleteObject,ListBucket,GetBucketAcl,GetObjectAcl,ListAllMyBuckets,GetBucketLocation -resource bucket1/* -sid "FullAccesToBucket1"

ONTAP S3のバケットの作成

ONTAP S3のバケットをobject-store-server bucket createで作成します。

::> object-store-server bucket create -vserver svm -bucket ontap-s3-bucket -type s3 -versioning-state enabled -comment ""
  (vserver object-store-server bucket create)
[Job 224] Job succeeded: Successful

::> object-store-server bucket show -bucket ontap-s3-bucket
  (vserver object-store-server bucket show)
Vserver     Bucket          Type     Volume            Size       Encryption Role       NAS Path
----------- --------------- -------- ----------------- ---------- ---------- ---------- ----------
svm         ontap-s3-bucket s3       fg_oss_1699177255 800GB      false      standalone -

::> object-store-server bucket show -bucket ontap-s3-bucket -instance
  (vserver object-store-server bucket show)

Vserver: svm

  Bucket                               :ontap-s3-bucket
  Type                                 :s3
  Versioning                           :enabled
  Uuid                                 :6eb04d3e-7bbf-11ee-9f74-d3a6f7a64800
  Volume                               :fg_oss_1699177255
  Size                                 :800GB
  Logical Used Size                    :0B
  Object Count                         :0
  Encryption                           :false
  Comment                              :
  Qos Policy Group                     :-
  Role                                 :standalone
  Bucket Protected                     :false
  Bucket Protected On ONTAP            :false
  Bucket Protected On Cloud            :false
  Bucket Protected on External Cloud   :false
  NAS Path                             :-
  Object Lock retention mode           :no-lock

S3バケットのボリュームはFlexGroupです。以下コマンドで確かにFlexGroupであることを確認しておきます。

::> vol show -volume fg_oss_1699177255* -is-constituent true
Vserver   Volume       Aggregate    State      Type       Size  Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm       fg_oss_1699177255__0001
                       aggr1        online     RW      862.3GB    818.7GB    0%
svm       fg_oss_1699177255__0002
                       aggr1        online     RW      862.3GB    818.7GB    0%
2 entries were displayed.

動作確認

動作確認をします。

S3ユーザーのアクセスキーとシークレットアクセスキーを登録します。

$ aws configure
AWS Access Key ID [None]: XEFD2323G5QAL53VC56C
AWS Secret Access Key [None]: <省略>
Default region name [None]: us-east-1
Default output format [None]: yaml

エンドポイントとしてSVMの管理エンドポイントを指定して、s3 lsを叩いてみます。

$ aws s3 ls \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com

SSL validation failed for https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1129)

証明書でエラーになりましたね。

サーバー証明書を検証できるようにCAの証明書をクライアントにインポートしてあげましょう。

# 証明書を配置するディレクトリの確認
$ ls -l /usr/share/pki/ca-trust-source/
total 2308
-rw-r--r--. 1 root root     937 Aug 15 18:20 README
drwxr-xr-x. 2 root root       6 Aug 15 18:22 anchors
drwxr-xr-x. 2 root root       6 Aug 15 18:22 blacklist
drwxr-xr-x. 2 root root       6 Aug 15 18:22 blocklist
-rw-r--r--. 1 root root 2357361 Aug 15 18:20 ca-bundle.trust.p11-kit

$ ls -l /usr/share/pki/ca-trust-source/anchors/
total 0

# CAの証明書を保存
$ sudo vi /usr/share/pki/ca-trust-source/anchors/svm_ca.pem

$ cat /usr/share/pki/ca-trust-source/anchors/svm_ca.pem
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIIF5St/KYIuXgwDQYJKoZIhvcNAQELBQAwHjEPMA0GA1UE
AxQGc3ZtX2NhMQswCQYDVQQGEwJVUzAeFw0yMzExMDUwODUxMDBaFw0yNDExMDQw
ODUxMDBaMB4xDzANBgNVBAMUBnN2bV9jYTELMAkGA1UEBhMCVVMwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHLk9VEkjMeN5SmWz8r7RP90zzWO4mQ/FI
E6zZlibcIfS/duCx6a1YHdEfoskjcYE81jnGuH2m+se6T9rxhNVIiqwOmEqCKos/
dxLGHVhjwfWMxp6pAIIqS6KCnPLc2/IldSGNxwYaDT1A2KvTdRtSKCKKR7OkKaqm
i+1R17vY/mqdHJbGNTtb1sh4olByYQgNEtg7h1/FW6wkMX8Vs3x7sLge0+SMnDlX
mfAYcD12jwsq48XTQbMzfFEnbC1TyLaC4vLVKx+eBbJANKS7XYJ0ehPLbVtjdVZU
TGFHR72nEXz+2DUJ3Xbr5dnVq6lmCYSRIj/5Xf4dUYW7CQyCAhsrAgMBAAGjgZIw
gY8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAj+
95pA7ItS677SE2hSDdCRwd2rME0GA1UdIwRGMESAFAj+95pA7ItS677SE2hSDdCR
wd2roSKkIDAeMQ8wDQYDVQQDFAZzdm1fY2ExCzAJBgNVBAYTAlVTgggXlK38pgi5
eDANBgkqhkiG9w0BAQsFAAOCAQEAbZ7CL+rDBWiViFVAi/GgcRQnr6e64TWYwWr9
6CZa84fSKpl6K5fvOC4g+nuJsIgDykdNozi4+gAUfROtXvaEOLMMahlImV+4l7bt
ZmeEtw/XlS57/qcq7CKweqz+lowvz+KeLc0KcWnRFKhJa78u0vzh7plO53Sy05oy
nBbc2cK4Bn9lBCg9IUwLDLp64mHDhsTMmm/riJRMqHw5XXq2+4euaw/sUw3G4B6u
a/8XPlhWvSuX9uqpax43jWnEUhq8jg3eUAfHrd7o/eh0Ssv5RV19Sq4Sm9wjBP9T
4Gm8ROcW3c6OWjh7wN01nZdTyXVRexYtOUG023X25HP+BSKimA==
-----END CERTIFICATE-----

# 保存した証明書を信頼できるCAとして登録
$ sudo update-ca-trust extract

再度コマンドを実行してみます。

$ aws s3 ls \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com

SSL validation failed for https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com/ [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1129)

エラーは変わらずといったところです。

curlでアクセスすると証明書によるエラーは特に発生していませんでした。

$ curl -v https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
*   Trying 10.0.9.75:443...
* Connected to svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com (10.0.9.75) port 443
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/pki/tls/certs/ca-bundle.crt
*  CApath: none
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN: server did not agree on a protocol. Uses default.
* Server certificate:
*  subject: CN=svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
*  start date: Nov  6 01:15:00 2023 GMT
*  expire date: Nov  9 01:15:00 2023 GMT
*  subjectAltName: host "svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com" matched cert's "svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com"
*  issuer: CN=svm_ca; C=US
*  SSL certificate verify ok.
* using HTTP/1.x
> GET / HTTP/1.1
> Host: svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com
> User-Agent: curl/8.3.0
> Accept: */*
>
< HTTP/1.1 403 Forbidden
< Server: NetApp CSS/9.13.0P4
< Date: Mon, 06 Nov 2023 02:28:08 GMT
< Connection: Close
< Content-Length: 110
< Content-Type: application/xml
<
* Closing connection
* TLSv1.2 (IN), TLS alert, close notify (256):
* TLSv1.2 (OUT), TLS alert, close notify (256):
<?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message>Access Denied</Message></Error>

AWS CLIは/etc/pki/tls/certs/ca-bundle.crtを参照していないのでしょうか。

s3 ls実行時に--ca-bundleで明示的に証明書のパスを指定してあげます。

$ aws s3 ls \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /usr/share/pki/ca-trust-source/anchors/svm_ca.pem
2023-11-05 09:41:02 ontap-s3-bucket

問題なく出力されました。

ファイルのアップロードができるか確認してみます。

# テキストファイルの作成
$ echo test-text > test-text.txt

# テキストファイルのアップロード
$ aws s3 cp test-text.txt s3://ontap-s3-bucket \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt
upload: ./test-text.txt to s3://ontap-s3-bucket/test-text.txt

# アップロードしたテキストファイルが存在することを確認
$ aws s3 ls s3://ontap-s3-bucket \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt
2023-11-06 01:31:26         10 test-text.txt

# アップロードしたテキストファイルの内容確認
$ aws s3 cp s3://ontap-s3-bucket/test-text.txt \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt \
  -
test-text

問題なくできました。

また、このバケットではバージョニングを有効化しています。

削除しても削除マーカーが付与されて、古いバージョンとしてオブジェクトが残っていることを確認します。

# バージョニングされていることを確認
$ aws s3api list-object-versions \
  --bucket ontap-s3-bucket \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt
Versions:
- ETag: 6af7520dcba2e60003c69b5671e84fb4
  IsLatest: true
  Key: test-text.txt
  LastModified: '2023-11-06T01:31:26.786000+00:00'
  Size: 10
  StorageClass: STANDARD
  VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u

# オブジェクトを削除
$ aws s3 rm s3://ontap-s3-bucket/test-text.txt \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt
delete: s3://ontap-s3-bucket/test-text.txt

# 削除マーカーが付与されたことを確認
$ aws s3api list-object-versions \
  --bucket ontap-s3-bucket \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt
DeleteMarkers:
- IsLatest: true
  Key: test-text.txt
  LastModified: '2023-11-06T01:43:41.866000+00:00'
  VersionId: ODY2MjIyMDAwLnYxLjYuMTY5OTIzNTAyMS4u
Versions:
- ETag: 6af7520dcba2e60003c69b5671e84fb4
  IsLatest: false
  Key: test-text.txt
  LastModified: '2023-11-06T01:31:26.786000+00:00'
  Size: 10
  StorageClass: STANDARD
  VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u

なお、通常のONTAP S3のS3バケットに関連付くボリュームを削除する際は、バケット内の全てのオブジェクトを削除してあげる必要があります。

全てのオブジェクトを削除せずにボリュームを削除しようとするとCannot delete the volume because it is associated with one or more object store buckets. Please delete all object store buckets associated with the volume, and try again.とエラーが出力されます。

Cannot delete the volume because it is associated with one or more object store buckets. Please delete all object store buckets associated with the volume, and try again.

バージョニングを有効化している場合は削除マーカーを含めて全て削除してあげる必要があるため要注意です。

対象バケットの全てのバージョンを削除するのは以下コマンドで行えます。

$ aws s3api delete-objects \
  --bucket ontap-s3-bucket \
  --delete "$(aws s3api list-object-versions --bucket ontap-s3-bucket --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com --ca-bundle /etc/pki/tls/certs/ca-bundle.crt --output json | jq '.Versions + .DeleteMarkers | {Objects: map({Key, VersionId})}')" \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt

Deleted:
- Key: test-text.txt
  VersionId: NjU2ODk0MDAwLnYxLjIuMTY5OTIzNTU3MC4u
- Key: test-text.txt
  VersionId: Nzg2MTQ5MDAwLnYxLjIuMTY5OTIzNDI4Ni4u
- Key: test-text.txt
  VersionId: ODY2MjIyMDAwLnYxLjYuMTY5OTIzNTAyMS4u

Snapshotの取得やFlexCloneができないことも確認します。

# Snapshotの取得
::> snapshot create -vserver svm -volume fg_oss_1699177255 -snapshot ontap_s3_snapshot

Error: command failed: Unable to create Snapshot for object store volume "fg_oss_1699177255" on Vserver svm".

# FlexCloneのボリューム作成
::> volume clone create -vserver svm -flexclone fg_oss_1699177255_clone -type RW -parent-vserver svm fg_oss_1699177255

Error: command failed: Cannot create "flexClone" on volume "fg_oss_1699177255" in Vserver "svm", because the volume is
       used by an object store server.

どちらも「オブジェクトストアサーバーのボリュームであるため」という理由でエラーになっていますね。

Data DualityなONTAP S3のS3バケットを作成してみる

SMB共有の作成

次にData DualityなONTAP S3のS3バケットを作成してみます。

下準備としてマッピングするボリュームに対してSMB共有を作成します。

# SMBサーバーの作成
::> cifs create -vserver svm -cifs-server smb-server -workgroup WORKGROUP

Notice: SMB1 protocol version is obsolete and considered insecure. Therefore it is deprecated and disabled on this CIFS server. Support for SMB1 might be removed in a future release. If
required, use the (privilege: advanced) "vserver cifs options modify -vserver svm -smb1-enabled true" to enable it.

# 作成したSMBサーバーの確認
::> cifs show
            Server          Status    Domain/Workgroup Authentication
Vserver     Name            Admin     Name             Style
----------- --------------- --------- ---------------- --------------
svm         SMB-SERVER      up        WORKGROUP        workgroup

# SMB共有の作成
::> cifs share create -vserver svm -share-name share -path /vol1

# 作成したSMB共有の確認
::> cifs share show
Vserver        Share         Path              Properties Comment  ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm            c$            /                 oplocks    -        BUILTIN\Administrators / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm            ipc$          /                 browsable  -        -
svm            share         /vol1             oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
3 entries were displayed.

ONTAP S3のユーザーとSMBユーザーのネームマッピング

続いてONTAP S3のユーザーとSMBユーザーのネームマッピングです。

まず、ネームマッピング用にSMBユーザーを作成します。

# SMBユーザーの作成
::> cifs users-and-groups local-user create -vserver svm -user-name smb-user -is-account-disabled false

Enter the password:
Confirm the password:

# 作成したSMBユーザーの確認
::> cifs users-and-groups local-user show
Vserver      User Name                   Full Name            Description
------------ --------------------------- -------------------- -------------
svm          SMB-SERVER\Administrator                         Built-in administrator account
svm          SMB-SERVER\smb-user         -                    -
2 entries were displayed.

S3ユーザーでアクセスしたときにSMBサーバーに変換して認可されるようにネームマッピングをします。

# ネームマッピングの作成
::> name-mapping create -direction s3-win -position 1 -pattern s3-user -replacement SMB-SERVER\\smb-user
  (vserver name-mapping create)

# ネームマッピングの確認
::> name-mapping show
  (vserver name-mapping show)

Vserver:   svm
Direction: s3-win
Position Hostname         IP Address/Mask
-------- ---------------- ----------------
1       -                 -                   Pattern: s3-user
                                          Replacement: SMB-SERVER\\smb-user

::> name-mapping show -instance
  (vserver name-mapping show)

                    Vserver: svm
                  Direction: s3-win
                   Position: 1
                    Pattern: s3-user
                Replacement: SMB-SERVER\\smb-user
IP Address with Subnet Mask: -
                   Hostname: -

ONTAP S3のバケットの作成

ONTAP S3バケットを作成します。

作成する際にパスとしてSMB共有で指定したパスと同じものを指定します。

# ONTAP S3バケットの作成
::> object-store-server bucket create -vserver svm -bucket ontap-nas-bucket -type nas -nas-path /vol1
  (vserver object-store-server bucket create)

# S3バケットの確認
::> object-store-server bucket show -bucket ontap-nas-bucket -instance
  (vserver object-store-server bucket show)

Vserver: svm

  Bucket                               :ontap-nas-bucket
  Type                                 :nas
  Versioning                           :-
  Uuid                                 :8402a992-7c46-11ee-aba3-3702a2258335
  Volume                               :vol1
  Size                                 :-
  Logical Used Size                    :-
  Object Count                         :-
  Encryption                           :false
  Comment                              :
  Qos Policy Group                     :-
  Role                                 :-
  Bucket Protected                     :-
  Bucket Protected On ONTAP            :-
  Bucket Protected On Cloud            :-
  Bucket Protected on External Cloud   :-
  NAS Path                             :/vol1
  Object Lock retention mode           :-

動作確認

動作確認です。

s3 cpでテキストファイルのアップロードができることを確認します。

$ aws s3 ls \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt
2023-11-06 01:47:59 ontap-nas-bucket
2023-11-05 09:41:02 ontap-s3-bucket

$ aws s3 cp test-text.txt s3://ontap-nas-bucket \
  --endpoint-url=https://svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com \
  --ca-bundle /etc/pki/tls/certs/ca-bundle.crt
upload: ./test-text.txt to s3://ontap-nas-bucket/test-text.txt

SMBクライアントからSMB共有をマウントして、s3 cpでアップロードされたテキストファイルを確認します。

# SMBでマウント
> net use Z: \\svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com\share
The password is invalid for \\svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com\share.

Enter the user name for 'svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com': SMB-SERVER\smb-user
Enter the password for svm-0093c4d58225f809b.fs-03e6b8146fca5e858.fsx.us-east-1.amazonaws.com:
The command completed successfully.

# マウントできたことを確認
> Get-PSDrive -PSProvider FileSystem

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
C                  15.52         14.48 FileSystem    C:\                                            Users\Administrator
Z                   0.00          0.95 FileSystem    \\svm-0093c4d58225f809b.fs-03e6b...

# ONTAP S3のS3バケットにアップロードしたファイルが存在していることを確認
> ls Z:\


    Directory: z:\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         11/6/2023   1:55 AM             10 test-text.txt

# ファイルの内容の表示
> cat Z:\test-text.txt
test-text

問題なくできましたね。

データ分析の時に役立ちそう

Amazon FSx for NetApp ONTAPで、ONTAP S3 の マルチプロトコルアクセスを試してみました。

データ分析の時に役立ちそうですね。

現状、ONTAP S3とAWSの各サービスの親和性は正直高くないので、さまざまなサービスとの連携が進むと嬉しいですね。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!