J'essaie d'avoir un beanstalk élastique pour provisionner une instance élastique. J'essaie de comprendre comment je peux accéder à l'adresse de l'instance de cache à l'exécution à partir de mon environnement de docker. Je cours python (sur gevent).Récupère l'adresse Elasticache à partir d'un docker Elastic Beanstalk container
Voici mon fichier de configuration au sein .ebextensions:
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: {Ref : AWSEBSecurityGroup}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
MyCacheSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "Lock cache down to webserver access only"
SecurityGroupIngress :
- IpProtocol : "tcp"
FromPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
ToPort :
Fn::GetOptionSetting:
OptionName : "CachePort"
DefaultValue: "6379"
SourceSecurityGroupName:
Ref: "AWSEBSecurityGroup"
MyElastiCache:
Type: "AWS::ElastiCache::CacheCluster"
Properties:
CacheNodeType:
Fn::GetOptionSetting:
OptionName : "CacheNodeType"
DefaultValue : "cache.t1.micro"
NumCacheNodes:
Fn::GetOptionSetting:
OptionName : "NumCacheNodes"
DefaultValue : "1"
Engine:
Fn::GetOptionSetting:
OptionName : "Engine"
DefaultValue : "redis"
VpcSecurityGroupIds:
-
Fn::GetAtt:
- MyCacheSecurityGroup
- GroupId
option_settings:
"aws:elasticbeanstalk:customoption":
CacheNodeType : cache.t1.micro
NumCacheNodes : 1
Engine : redis
CachePort : 6379
Outputs:
ElastiCache:
Description : "ID of ElastiCache Cache Cluster with Redis Engine"
Value :
Ref : "MyElastiCache"
files:
/etc/nginx/conf.d/ssl.conf:
mode: "000755"
owner: root
group: root
content: |
# HTTPS Server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers on;
location/{
proxy_pass http://docker;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
/tmp/elasticache.env:
mode: "000444"
content: |
export ELASTICACHE_CONFIGURATION_ENDPOINT="'{"Fn::GetAtt": ["MyElastiCache", "ConfigurationEndpoint.Address"]}':'{"Fn::GetAtt": ["MyElastiCache", "ConfigurationEndpoint.Port"]}'"
option_settings:
- option_name: ELASTICACHE_DATA_FILE
value: /var/app/elasticache
container_commands:
copy_crt:
command: cp .ebextensions/server.crt /etc/pki/tls/certs/server.crt
copy_key:
command: cp .ebextensions/server.key /etc/pki/tls/certs/server.key
J'ai suivi le guide ici: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-environment-resources-elasticache.html#customize-environment-resources-elasticache-defaultvpc. Et ajouté un support pour l'utilisation de notre certificat tls.
Mon problème est que le fichier /tmp/elasticache.env ne sera pas accessible depuis l'instance du docker. Existe-t-il un meilleur moyen d'obtenir les informations d'identification elasticache?
Merci! Cela aidera avec d'autres variables d'environnement. Cependant, j'essaie de comprendre comment utiliser Elasticache correctement dans Elastic Beanstalk. –
Cela ne fonctionnera pas avec Redis, qui est ce que l'OP utilise, il ne fonctionnera qu'avec Memcache, Pour l'utilisation de Redis {"Fn :: GetAtt": ["MyElastiCache", "RedisEndpoint.Address"]} Pour référence: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html#d0e52037 –