Cassandra Go 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon 키스페이스에 액세스 - Amazon Keyspaces(Apache Cassandra용)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Cassandra Go 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon 키스페이스에 액세스

이 단원에서는 Go 클라이언트 드라이버를 사용하여 Amazon Keyspaces 연결하는 방법을 설명합니다. 사용자 및 애플리케이션에 Amazon Keyspaces 리소스에 프로그래밍 방식으로 액세스할 수 있는 자격 증명을 제공하려면 다음 중 하나를 수행할 수 있습니다.

  • 특정AWS Identity and Access Management (IAM) 사용자와 연결된 서비스별 자격 증명을 생성합니다.

  • 보안을 강화하려면 모든AWS 서비스에서 사용되는 IAM 사용자 및 역할을 위한 IAM 액세스 키를 생성하는 것이 좋습니다. 카산드라 클라이언트 드라이버용 Amazon Keyspaces SigV4 인증 플러그인을 사용하면 사용자 이름과 암호 대신 IAM 액세스 키를 사용하여 Amazon 키스페이스에 대한 호출을 인증할 수 있습니다. 자세한 내용은 생성 및 구성 방법AWSAmazon Keyspaces을 참조하세요.

시작하기 전에

시작하려면 먼저 다음 작업을 완료해야 합니다.

Amazon Keyspace에서는 클라이언트와의 연결을 보호하기 위해 전송 계층 보안 (TLS) 을 사용해야 합니다. TLS를 사용하여 Amazon 키스페이스에 연결하려면 Amazon 디지털 인증서를 다운로드하고 TLS를 사용하도록 Python 드라이버를 구성해야 합니다.

다음 명령을 사용하여 Starfield 디지털 인증서를 다운로드하고sf-class2-root.crt 로컬 또는 홈 디렉토리에 저장합니다.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
참고

또한 Amazon 디지털 인증서를 사용하여 Amazon 키스페이스에 연결할 수 있으며, 클라이언트가 Amazon Keyspace에 성공적으로 연결되면 계속 연결할 수 있습니다. Starfield 인증서는 이전 인증 기관을 사용하는 클라이언트에 추가 이전 버전과의 호환성을 제공합니다.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

아파치 카산드라용 Gocql 드라이버와 서비스별 자격 증명을 사용하여 아마존 키스페이스에 Connect

  1. 애플리케이션용 디렉터리를 생성합니다.

    mkdir ./gocqlexample
  2. 새 디렉터리로 이동합니다.

    cd gocqlexample
  3. 애플리케이션용 파일을 생성합니다.

    touch cqlapp.go
  4. Go 드라이버를 다운로드하세요.

    go get github.com/gocql/gocql
  5. 다음 샘플 코드를 cqlapp.go 파일에 추가합니다.

    package main import ( "fmt" "github.com/gocql/gocql" "log" ) func main() { // add the Amazon Keyspaces service endpoint cluster := gocql.NewCluster("cassandra.us-east-2.amazonaws.com") cluster.Port=9142 // add your service specific credentials cluster.Authenticator = gocql.PasswordAuthenticator{ Username: "ServiceUserName", Password: "ServicePassword"} // provide the path to the sf-class2-root.crt cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/sf-class2-root.crt", EnableHostVerification: false, } // Override default Consistency to LocalQuorum cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = false session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) } defer session.Close() // run a sample query from the system keyspace var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) } session.Close() }

    사용 시 주의사항:

    1. 첫 번째 단계에서 저장한 인증서의 경로로"path_to_file/sf-class2-root.crt" 바꾸십시오.

    2. 다음 단계에 따라 ServiceUserName및 가 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 ServicePassword일치하는지 확인하십시오서비스별 자격 증명 생성.

    3. 사용 가능한 엔드포인트 목록은 단원을 참조하십시오Amazon 키스페이스의 서비스 엔드포인트.

  6. 프로그램을 빌드하세요.

    go build cqlapp.go
  7. 프로그램을 실행합니다.

    ./cqlapp

아파치 카산드라용 Go 드라이버와 SigV4 인증 플러그인을 사용하여 아마존 키스페이스에 Connect

다음 코드 샘플은 오픈 소스 Go 드라이버용 SigV4 인증 플러그인을 사용하여 Amazon Keyspaces (Apache Cassandra용) 에 액세스하는 방법을 보여줍니다.

아직 수행하지 않은 경우 의 단계에 따라 IAM 사용자 또는 역할에 대한 자격 증명을생성 및 구성 방법AWSAmazon Keyspaces 생성합니다.

GitHub 리포지토리에서 애플리케이션에 Go SigV4 인증 플러그인을 추가합니다. 플러그인은 Cassandra용 오픈 소스 Go 드라이버 버전 4.x를 지원하며AWS SDK for Go SDK에 의존합니다.

$ go mod init $ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin

이 코드 샘플에서는 Amazon Keyspaces 엔드포인트가Cluster 클래스로 표시됩니다. AwsAuthenticator클러스터의 인증자 속성을 사용하여 자격 증명을 가져옵니다.

package main import ( "fmt" "github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin/sigv4" "github.com/gocql/gocql" "log" ) func main() { // configuring the cluster options cluster := gocql.NewCluster("cassandra.us-west-2.amazonaws.com") cluster.Port=9142 var auth sigv4.AwsAuthenticator = sigv4.NewAwsAuthenticator() auth.Region = "us-west-2" auth.AccessKeyId = "AKIAIOSFODNN7EXAMPLE" auth.SecretAccessKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" cluster.Authenticator = auth cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/sf-class2-root.crt", EnableHostVerification: false, } cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = false session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) return } defer session.Close() // doing the query var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) } }

사용 시 주의사항:

  1. 첫 번째 단계에서 저장한 인증서의 경로로"path_to_file/sf-class2-root.crt" 바꾸십시오.

  2. AccessKeyId사용하여 얻은 액세스 키와 보안 액세스 키가 SecretAccessKey일치하는지 확인하십시오AwsAuthenticator. 자세한 내용은 의AWS SDK for Go 구성을 참조하십시오 AWS SDK for Go.

  3. 코드 외부에 액세스 키를 저장하려면 에서 모범 사례를 참조하십시오IAM 사용자의 액세스 키를 관리하는 방법.

  4. 사용 가능한 엔드포인트 목록은 단원을 참조하십시오Amazon 키스페이스의 서비스 엔드포인트.