0

AWSでは、内部に1つのredisノードとECSクラスターを持つelasticacheクラスタがあります。私はredisエンドポイントURLを私のドッカーコンテナに渡すより良い方法が何であるかわかりません。ダッカーコンテナインスタンスへのelasticacheノードエンドポイントの受け渡し

現在のところ、自分のタスク定義では、自分の値にREDIS_ENDPOINTという名前の環境変数を使用しています。以前はうまくいきました。

私はすべての手動操作(AWS UIを使用)からTerraformへの展開プロセスを変換しています。そしてredisノードはterraform(dnsは潜在的に変更される)によって作成され、env変数(コンテナ定義の一部)は静的なjsonファイルの中になければならないため、REDIS_ENDPOINT環境変数はこれ以上はうまく機能しません。

私はいくつかのドキュメントを読みましたが、それを行う正しい方法が見つかりません。 AWSのドキュメントで迷っているかもしれません。

答えて

0

Elasticache cluster using Terraformを作成すると、作成されたノードのアドレスを含む出力変数にアクセスできます。

ここでは2つのオプションがあります。アプリケーションが静的に使用できる出力アドレスにCNAMEを設定するDNSレコードを作成するか、出力されたアドレスをアプリケーションがアクセスできるテンプレートファイルで使用できます。

あなたはこのようなものかもしれないので、私は通常、最初のオプションでいいと思う:あなたのアプリケーションは、その後だけに使用するエンドポイントとしてredis.example.com:6379を使用することができますし、再構築した場合でも、これは常に動作します

resource "aws_elasticache_cluster" "redis" { 
    cluster_id = "redis-cluster" 
    engine = "redis" 
    node_type = "cache.t2.micro" 
    port = 6379 
    num_cache_nodes = 1 
    parameter_group_name = "default.redis2.8" 
} 

resource "aws_route53_record" "redis" { 
    zone_id = "${var.dns_zone_id}" 
    name = "redis.example.com" 
    type = "CNAME" 
    ttl = "60" 
    records = ["${aws_elasticache_cluster.redis.address}"] 
} 

をあなたのElasticacheクラスター。

0

出力{}変数を使用すると、ECSでremote stateを使用して取得できます。 ECSのためのあなたのTFで次に

resource "aws_elasticache_cluster" "redis" { 
    cluster_id = "redis-cluster" 
    engine = "redis" 
    node_type = "cache.t2.micro" 
    port = 6379 
    num_cache_nodes = 1 
    parameter_group_name = "default.redis2.8" 
} 


output "redis_address" { 
    value = "${aws_elasticache_cluster.redis.address}" 
} 

(仮定S3リモート状態):

data "terraform_remote_state" "redis" { 
    backend = "s3" 
    config { 
     bucket = "com-my-bucket" 
     key = "redis/terraform.tfstate" 
     region = "us-east-1" 
    } 
} 

# address = "${data.terraform_remote_state.redis.redis_address}" 
関連する問題