2017-01-12 4 views
1

私の現在の展開プロセス:展開EB

  1. コード
  2. EB CLIとEBインスタンスにアップロードコードと.elasticbeanstalk/config.yml からzipファイルを作成します。私は、アプリケーション名を指定して、環境名config.ymlのアーティファクト(zipファイル)。

AWS SDK(nodeJS)のみを使用してEBインスタンスにコードをデプロイできますか?

答えて

5

自分自身が見つかりました。 ZIPファイルをS3にアップロードする必要があります。 次に、EBアプリケーション用のアプリケーションバージョンを作成する必要があります(ZIPファイルがある場合は一意のラベルとS3Keyを使用してください)。 その後、EB環境を新しいVersionlabelで更新する必要があります(必要に応じてNode startスクリプトを指定することを忘れないでください)。

はたぶん、このコードは、誰かのために参考になります:私は必要なものを正確に

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

、ありがとう! –