2017-01-12 1 views
1

나의 현재 배포 프로세스 :배포 EB를 통해 AWS SDK

  1. 코드에서 zip 파일
  2. 업로드 코드 EB CLI와 EB 인스턴스 및 .elasticbeanstalk/config.yml 내가 응용 프로그램 이름을 지정 , 환경 이름 만들기 및 config.yml의 artifact (zip 파일).

AWS SDK (nodeJS) 만 사용하여 EB 인스턴스에 코드를 배포 할 수 있습니까?

답변

5

나 자신을 발견. S3에 ZIP 파일을 업로드해야합니다. 그런 다음 EB 응용 프로그램 용 응용 프로그램 버전을 만들어야합니다 (Zip 파일이있는 고유 레이블 및 S3Key 사용). 그런 다음 EB 환경을 새 Versionlabel로 업데이트해야합니다 (필요한 경우 노드 시작 스크립트를 지정하는 것을 잊지 마십시오).

아마이 코드는 누군가를 위해 도움이 될 것입니다 : 내가 필요한 것을 정확히

var aws = require('aws-sdk'); 
var s3 = new aws.S3(); 
var eb = new aws.ElasticBeanstalk(); 

var zipFileName = 'myCodeZipArchive.zip'; 
var appName = 'app-name'; 
var envName = 'env-name'; 
var s3bucket = 'my-app-source-bucket'; 

var label = `${appName}_${envName}_${new Date().toISOString()}`; 

s3.upload({ 
    Bucket: s3bucket, 
    Key: label, 
    Body: fs.createReadStream(zipFileName) 
}).promise().then(() => eb.createApplicationVersion({ 
    ApplicationName: appName, 
    VersionLabel: label, 
    SourceBundle: { 
    S3Bucket: s3bucket, 
    S3Key: label 
    } 
}).promise()).then(() => eb.updateEnvironment({ 
    ApplicationName: appName, 
    EnvironmentName: envName, 
    OptionSettings: [{ 
    Namespace: 'aws:elasticbeanstalk:container:nodejs', 
    OptionName: 'NodeCommand', 
    Value: 'npm start' 
    }], 
    VersionLabel: label 
}).promise()); 
+0

, 감사합니다! –