Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 4

0
votes
answers
59 views
+10

什麼是「!Sub |」在AWS UserData字段中使用YAML語法表示?

0

在從AWS docs這個例子中,我們有一個的UserData字段,它允許多行字符串,使用的語法如下:什麼是「!Sub |」在AWS UserData字段中使用YAML語法表示?

UserData: 
    Fn::Base64: !Sub | 
    #!/bin/bash -xe 
    yum update -y aws-cfn-bootstrap 
    /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --region ${AWS::Region} 
    /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region} 

是什麼意思!Sub |這裏,尤其是管道字符?相應的JSON使用"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [,但在YAML中使用!Sub |

管道字符是否代表換行符,表示換行必須加上換行符?

+0

http://www.yaml.org/spec/1.2/spec.html#id2795688 – melpomene

沙发
0
2

內在函數Fn :: Sub(YAML!Sub)將輸入字符串中的變量替換爲您指定的值。在您的模板中,您可以使用此函數來構造命令或輸出,其中包括在創建或更新堆棧之前不可用的值。

字符'|' (管道符號)的意思是「文字風格」。這使用更簡單,更可讀的標量樣式。這意味着您可以輸入正常的文本而不必使用諸如「 n」之類的詞語來表示行尾。

Fn::Sub

YAML Spec

板凳
0
1

在您的UserData部分中,!Sub函數將UserData字符串中的變量替換爲您指定的值或僞參數(如AWS :: StackName和AWS :: Region)。

此外,YAML中行尾部的管道符號表示在!Sub |之後的任何縮進文本應被解釋爲多行標量值。

有關更多詳細信息,請參閱固有功能詳細信息documentation

0
votes
answers
56 views
+10

lookup_events使用boto3不返回事件詳細信息

1

我使用下面的代碼,但沒有得到所需的事件詳細信息。我確認事件ID是正確的,並檢查從aws UI返回的詳細信息lookup_events使用boto3不返回事件詳細信息

我也試過在事件ID之前和之後沒有單引號,但沒有返回細節。

client = boto3.client('cloudtrail',region_name='us-east-1') 
     response = client.lookup_events(
      LookupAttributes=[ 
       { 
        'AttributeKey': 'EventId', 
        'AttributeValue': "'" + str(eventid) + "'" 
       }, 
      ], 

      MaxResults=1, 

     ) 

下面是我收到的回覆,事件是空的。

{u'Events': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': 'ea8888ab-0987-1234-4321-096c31sdfsdf', 'HTTPHeaders': {'x-amzn-requestid': '345551dd-1234-9876-1221-sddweerwer', 'date': 'Sat, 11 Nov 2017 17:08:20 GMT', 'content-length': '13', 'content-type': 'application/x-amz-json-1.1'}}} 
沙发
0
0

的屬性嘗試

LookupAttributes=[ 
    { 
     'AttributeKey': 'EventId', 
     'AttributeValue': "{}".format(eventid) 
    }, 
] 

如果不是這樣,也許三重檢查eventid定義?

+0

此解決方案適合我!謝謝 !! – dip

板凳
0
0

請勿在EventId中加引號。只有在通過Python傳遞原始值時才需要引號 - 實際值不應包含引號。

'AttributeValue': eventid 
0
votes
answers
28 views
+10

AWS s3存儲桶上的「content-MD5」錯誤

0

我正在創建一個應用程序,它將視頻文件發送到Amazon s3存儲桶,但只能在將apk重新上傳到手機之前發送1個視頻。拋出的錯誤與服務上的「BadDigest」錯誤有關:「Amazon S3」。以下是輸出錯誤。AWS s3存儲桶上的「content-MD5」錯誤

11-08 23:56:33.805 26045-26045/org.----------.videorecorder_aws W/System.err: com.amazonaws.services.s3.model.AmazonS3Exception: The Content-MD5 you specified did not match what we received. (Service: Amazon S3; Status Code: 400; Error Code: BadDigest; Request ID: 3345945A95914871), S3 Extended Request ID: pSWjCNJ6sMOiFytjZr0PRn9rns3jFoMkECoI+lfXgF0agfQTY4CdvXlsYJbCBK9qYE/OoAkWTrY= 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:729) 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:405) 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:212) 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4625) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1728) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.uploadSinglePartAndWaitForCompletion(UploadTask.java:214) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.call(UploadTask.java:88) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.call(UploadTask.java:47) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
11-08 23:56:33.808 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
11-08 23:56:33.808 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
11-08 23:56:33.808 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.lang.Thread.run(Thread.java:762) 

請讓我知道如果您需要更多信息,這是一個相當時間敏感的問題。

編輯1 針對donkon,這裏要說的是,我使用我的文件發送到服務器的代碼:

public void submitVideoToS3Bucket(){ 
    TransferUtility transferUtility = new TransferUtility(s3, getApplicationContext()); 

    File directory = new File(getFilesDir(), "Reflex"); 
    final File CameraFile = new File(directory, "camera-temp.mp4"); 

    Date now = new Date(); 
    String videoName = now.toString().concat(".mp4").replace(" ", "_").replace(":", ""); 

    TransferObserver observer = transferUtility.upload(Constants.BUCKET_NAME, videoName, CameraFile); 

    observer.setTransferListener(new TransferListener() { 

     @Override 
     public void onStateChanged(int id, TransferState state) { 
      if (TransferState.COMPLETED == state) { 
      } 
      System.out.println("state change"); 
     } 

     @Override 
     public void onProgressChanged(
       int id, long bytesCurrent, long bytesTotal) { 
     } 

     @Override 
     public void onError(int id, Exception ex) { 
      ex.printStackTrace(); 
     } 
    }); 
    if (TransferState.COMPLETED == observer.getState()) { 
     // Handle a completed upload. 
     Intent cameraIntent = new Intent(this, CameraActivity.class); 
     startActivity(cameraIntent); 
    } 
} 
+0

不知道,但是如果您還沒有,也應該在AWS論壇上發帖。如果您能負擔得起,AWS支持也非常好。 – nasch

+0

你能提供代碼和示例文件來重現錯誤嗎?你使用哪個版本的SDK? – donkon

+0

內容是否隨着您的上傳而改變? –

沙发
0
0

的問題是,當你上傳的內容是不斷變化的。嘗試使用您的代碼上傳靜態文件(即,完成錄製的視頻),它應該可以工作。

+0

當我將「public void submitVideoToS3Bucket()」更改爲「public static ...」時,它不再有效。我該如何改變它,以便它上傳一個靜態文件? –

+0

在開始上傳之前,視頻必須完全錄制並保存。 –

0
votes
answers
70 views
+10

AWS cfn資源創建失敗記錄集

1

我想部署一個使用cloudformation的靜態網站,但我在創建記錄集時遇到問題。堆棧創建成功,直到資源部分中的託管區域。我不確定爲什麼創建託管區域的記錄集有問題。AWS cfn資源創建失敗記錄集

Error: The following resource(s) failed to create: [RecordSet].

 --- 
AWSTemplateFormatVersion: '2010-09-09' 
Description: 'Assuming that you already have a Hosted Zone registered with Amazon Route 53, this Cfn template is to create a static site' 
# Metadata: 
# 'AWS::CloudFormation::Interface': 
#  ParameterGroups: 
#  - Label: 
#   default: 'HostedZone name' 
#   Parameters: 
#   - HostedZoneName 
Parameters: 
    HostedZoneName: 
    Description: "The DNS name of an existing Amazon Route 53 hosted zone" 
    Type: String 
    AllowedPattern: "(?!-)[a-zA-Z0-9-.]{1,63}(?<!-)" 
    Default: "thecloudcrew.net" 


Resources: 

    S3Bucket: 
    Type: AWS::S3::Bucket 
    Properties: 
     AccessControl: PublicRead 
     BucketName: !Ref HostedZoneName 
     WebsiteConfiguration: 
     IndexDocument: index.html 
     ErrorDocument: error.html 
     LoggingConfiguration: 
     DestinationBucketName: !Ref S3LoggingBucket 
     LogFilePrefix: logs 

    WWWS3Bucket: 
    Type: AWS::S3::Bucket 
    Properties: 
     BucketName: !Sub 
     - www.${domain} 
     - { domain: !Ref HostedZoneName} 
     WebsiteConfiguration: 
     RedirectAllRequestsTo: 
      HostName: !Ref HostedZoneName 

    S3LoggingBucket: 
    Type: AWS::S3::Bucket 
    Properties: 
     BucketName: !Sub 
     - ${domain}.logs 
     - { domain: !Ref HostedZoneName} 
     AccessControl: LogDeliveryWrite 

    HostedZone: 
    Type: "AWS::Route53::HostedZone" 
    Properties: 
     HostedZoneConfig: 
     Comment: "My Hosted zone for thecloudcrew.net" 
     HostedZoneTags: 
     - 
      Key: Name 
      Value: thecloudcrew 
     Name: !Ref HostedZoneName 

    RecordSet: #FIXME 
    Type: "AWS::Route53::RecordSet" 
    Properties: 
     AliasTarget: 
     DNSName: s3-website.us-east-2.amazonaws.com 
     HostedZoneId: Z2O1EMRO9K5GLX 
     Comment: "RecordSet for static website" 
     HostedZoneId: !Ref HostedZone #TODO 
     Name: !Ref HostedZone 
     Type: A 
     #Region: 'us-east-2' 
     # SetIdentifier: String 
     # TTL: String 
     # Weight: Integer 
+0

當您點擊錯誤來展開它時,它會爲您提供更多信息嗎? – kichik

沙发
0
1

你缺少Type: A財產,你必須HostedZoneId更換HosteZoneName。此外,刪除Region它是全球性的Route53中沒有用。

+0

我做了更改,仍然收到錯誤「RRSet與DNS名稱z3b9u6qmuquywf。不允許在zone thecloudcrew.net中。」 –

0
votes
answers
61 views
+10

基於文件名的AWS Glue自定義爬蟲程序

0

因此,我正在嘗試的是使用AWS Glue對S3存儲桶中的數據進行爬網。存儲爲嵌套的JSON和路徑數據是這樣的:基於文件名的AWS Glue自定義爬蟲程序

s3://my-bucket/some_id/some_subfolder/datetime.json 

當運行默認的抓取工具(沒有自定義分類),它基於路徑劃分,並如預期反序列化JSON,不過,我想擺脫時間戳文件名稱以及單獨的字段中。目前Crawler忽略它。

例如,如果我上運行履帶:

s3://my-bucket/10001/fromage/2017-10-10.json 

我拿到表的模式是這樣的:

  • 分區1:10001
  • 分區2:清爽
  • 陣列:JSON數據

我嘗試過基礎上添加神交模式自定義分類:

%{INT:id}/%{WORD:source}/%{TIMESTAMP_ISO8601:timestamp} 

enter image description here

但是,每當我重新運行履帶它將跳過自定義分類,並使用默認的JSON之一。作爲解決方案很明顯,我可以追加文件名稱到JSON本身運行的履帶式之前,但不知道是否我能避免這一步呢?

沙发
0
0

分類器只分析文件中的數據,而不是文件名本身。你想做什麼是不可能的今天。如果您可以更改文件降落的路徑,您可以添加日期作爲另一個分區:他們添加基於相對路徑分區

s3://my-bucket/id=10001/source=fromage/timestamp=2017-10-10/data-file-2017-10-10.json 
+0

量詞不僅分析數據。因此,只是希望將有可能對其進行檢索而不是做通過自定義地圖這個任務減少 – madbitloman

+0

我找不到任何參考提示爬蟲應用分類器中發現的文件的相對路徑。該AWS文檔表明,爬行(未分類)分區基於文件的前綴的數據。 – hoaxz

+0

幻燈片23從這裏https://www.slideshare.net/AmazonWebServices/bda311-introduction-to-aws-glue – madbitloman

0
votes
answers
52 views
+10

VPC中的Lambda函數無法訪問Internet

0

我的Lambda函數可以訪問VPC中的其他資源,但一旦它嘗試向Internet發出請求,它就會超時。我有以下幾點:VPC中的Lambda函數無法訪問Internet

  • 兩個專用子網
  • 路由表的路由0.0.0.0/0互聯網網關。
  • 一對夫婦的ACL規則和LAMBDA安全組

任何幫助將是有益的。這裏是我的CF模板:

AWSTemplateFormatVersion: 2010-09-09 
Description: VPC Stack 
Resources: 
    VPC: 
    Type: 'AWS::EC2::VPC' 
    Properties: 
     CidrBlock: 10.0.0.0/16 
     EnableDnsHostnames: true 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    Subnet1: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     VpcId: !Ref VPC 
     CidrBlock: 10.0.3.0/24 
     AvailabilityZone: 'us-east-1b' 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    Subnet2: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     VpcId: !Ref VPC 
     CidrBlock: 10.0.4.0/24 
     AvailabilityZone: 'us-east-1e' 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    InternetGateway: 
    Type: 'AWS::EC2::InternetGateway' 
    Properties: 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    AttachGateway: 
    Type: 'AWS::EC2::VPCGatewayAttachment' 
    Properties: 
     VpcId: !Ref VPC 
     InternetGatewayId: !Ref InternetGateway 
    RouteTable: 
    Type: 'AWS::EC2::RouteTable' 
    Properties: 
     VpcId: !Ref VPC 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    Route: 
    Type: 'AWS::EC2::Route' 
    DependsOn: AttachGateway 
    Properties: 
     RouteTableId: !Ref RouteTable 
     DestinationCidrBlock: 0.0.0.0/0 
     GatewayId: !Ref InternetGateway 
    SubnetRouteTableAssociation1: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref Subnet1 
     RouteTableId: !Ref RouteTable 
    SubnetRouteTableAssociation2: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref Subnet2 
     RouteTableId: !Ref RouteTable 
    NetworkAcl: 
    Type: 'AWS::EC2::NetworkAcl' 
    Properties: 
     VpcId: !Ref VPC 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    InboundHTTPNetworkAclEntry: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAcl 
     RuleNumber: '100' 
     Protocol: '6' 
     RuleAction: allowAWSTemplateFormatVersion: 2010-09-09 
Description: VPC Stack 
Resources: 
    VPC: 
    Type: 'AWS::EC2::VPC' 
    Properties: 
     CidrBlock: 10.0.0.0/16 
     EnableDnsHostnames: true 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    Subnet1: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     VpcId: !Ref VPC 
     CidrBlock: 10.0.3.0/24 
     AvailabilityZone: 'us-east-1b' 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    Subnet2: 
    Type: 'AWS::EC2::Subnet' 
    Properties: 
     VpcId: !Ref VPC 
     CidrBlock: 10.0.4.0/24 
     AvailabilityZone: 'us-east-1e' 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    InternetGateway: 
    Type: 'AWS::EC2::InternetGateway' 
    Properties: 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    AttachGateway: 
    Type: 'AWS::EC2::VPCGatewayAttachment' 
    Properties: 
     VpcId: !Ref VPC 
     InternetGatewayId: !Ref InternetGateway 
    RouteTable: 
    Type: 'AWS::EC2::RouteTable' 
    Properties: 
     VpcId: !Ref VPC 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    Route: 
    Type: 'AWS::EC2::Route' 
    DependsOn: AttachGateway 
    Properties: 
     RouteTableId: !Ref RouteTable 
     DestinationCidrBlock: 0.0.0.0/0 
     GatewayId: !Ref InternetGateway 
    SubnetRouteTableAssociation1: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref Subnet1 
     RouteTableId: !Ref RouteTable 
    SubnetRouteTableAssociation2: 
    Type: 'AWS::EC2::SubnetRouteTableAssociation' 
    Properties: 
     SubnetId: !Ref Subnet2 
     RouteTableId: !Ref RouteTable 
    NetworkAcl: 
    Type: 'AWS::EC2::NetworkAcl' 
    Properties: 
     VpcId: !Ref VPC 
     Tags: 
     - Key: Application 
      Value: !Ref 'AWS::StackId' 
    InboundHTTPNetworkAclEntry: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAcl 
     RuleNumber: '100' 
     Protocol: '6' 
     RuleAction: allow 
     Egress: 'false' 
     CidrBlock: 0.0.0.0/0 
     PortRange: 
     From: '80' 
     To: '80' 
    InboundSSHNetworkAclEntry: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAcl 
     RuleNumber: '101' 
     Protocol: '6' 
     RuleAction: allow 
     Egress: 'false' 
     CidrBlock: 0.0.0.0/0 
     PortRange: 
     From: '22' 
     To: '22' 
    InboundResponsePortsNetworkAclEntry: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAcl 
     RuleNumber: '102' 
     Protocol: '6' 
     RuleAction: allow 
     Egress: 'false' 
     CidrBlock: 0.0.0.0/0 
     PortRange: 
     From: '1024' 
     To: '65535' 
    OutBoundNetworkAclEntry: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAcl 
     RuleNumber: '103' 
     Protocol: '6' 
     RuleAction: allow 
     Egress: 'true' 
     CidrBlock: 0.0.0.0/0 
     PortRange: 
     From: '0' 
     To: '65535' 
    SubnetNetworkAclAssociation1: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref Subnet1 
     NetworkAclId: !Ref NetworkAcl 
    SubnetNetworkAclAssociation2: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref Subnet2 
     NetworkAclId: !Ref NetworkAcl 
    LambdaSecurityGroup: 
     Type: AWS::EC2::SecurityGroup 
     Properties: 
      VpcId: !Ref VPC 
      GroupDescription: Access to Lambda functions 
      SecurityGroupIngress: 
      - CidrIp: 0.0.0.0/0 
       IpProtocol: -1 
     SecurityGroupEgress: 
      - CidrIp: 0.0.0.0/0 
       IpProtocol: -1 
Outputs: 
    VpcId: 
    Description: VPC ID 
    Value: !Ref VPC 
    Export: 
     Name: !Sub "Portal-VpcId" 
    Subnet1: 
    Description: Subnet ID 1 
    Value: !Ref Subnet1 
    Export: 
     Name: !Sub "Portal-SubnetID1" 
    Subnet2: 
    Description: Subnet ID 2 
    Value: !Ref Subnet2 
    Export: 
     Name: !Sub "Portal-SubnetID2"  
    LambdaSecurityGroup: 
    Description: Access to Lambda functions 
    Value: !Ref LambdaSecurityGroup 
    Export: 
     Name: !Sub "LambdaSecurityGroup"  
     Egress: 'false' 
     CidrBlock: 0.0.0.0/0 
     PortRange: 
     From: '80' 
     To: '80' 
    InboundResponsePortsNetworkAclEntry: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAcl 
     RuleNumber: '102' 
     Protocol: '6' 
     RuleAction: allow 
     Egress: 'false' 
     CidrBlock: 0.0.0.0/0 
     PortRange: 
     From: '1024' 
     To: '65535' 
    OutBoundNetworkAclEntry: 
    Type: 'AWS::EC2::NetworkAclEntry' 
    Properties: 
     NetworkAclId: !Ref NetworkAcl 
     RuleNumber: '103' 
     Protocol: '6' 
     RuleAction: allow 
     Egress: 'true' 
     CidrBlock: 0.0.0.0/0 
     PortRange: 
     From: '0' 
     To: '65535' 
    SubnetNetworkAclAssociation1: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref Subnet1 
     NetworkAclId: !Ref NetworkAcl 
    SubnetNetworkAclAssociation2: 
    Type: 'AWS::EC2::SubnetNetworkAclAssociation' 
    Properties: 
     SubnetId: !Ref Subnet2 
     NetworkAclId: !Ref NetworkAcl 
    LambdaSecurityGroup: 
     Type: AWS::EC2::SecurityGroup 
     Properties: 
      VpcId: !Ref VPC 
      GroupDescription: Access to Lambda functions 
      SecurityGroupIngress: 
      - CidrIp: 0.0.0.0/0 
       IpProtocol: -1 
      SecurityGroupEgress: 
      - CidrIp: 0.0.0.0/0 
       IpProtocol: -1 
Outputs: 
    VpcId: 
    Description: VPC ID 
    Value: !Ref VPC 
    Export: 
     Name: !Sub "Portal-VpcId" 
    Subnet1: 
    Description: Subnet ID 1 
    Value: !Ref Subnet1 
    Export: 
     Name: !Sub "Portal-SubnetID1" 
    Subnet2: 
    Description: Subnet ID 2 
    Value: !Ref Subnet2 
    Export: 
     Name: !Sub "Portal-SubnetID2"  
    LambdaSecurityGroup: 
    Description: Access to Lambda functions 
    Value: !Ref LambdaSecurityGroup 
    Export: 
     Name: !Sub "LambdaSecurityGroup"  

CF模板2:

??
+1

看到的是https將所有向外的連接://aws.amazon .com/premiumsupport/knowledge-center/internet-access-lambda-function/ – jarmod

沙发
0
2

在VPC內部執行Lambda函數時,Lambda函數將只接收私有IP地址。它不會收到公共IP地址。

爲了任何AWS服務器通過互聯網網關來訪問公共互聯網,它必須:

  1. 有一個公網IP地址,並
  2. 在一個公共子網(即一個子網。直接訪問互聯網網關)

由於您的Lambda函數沒有該公共IP地址,因此它無法訪問互聯網,即使它位於公有子網中。

要解決此問題,您必須在專用子網中執行Lambda函數。這是一個子網:

  1. 沒有到Internet網關的直接訪問,並
  2. 通過NAT實例或NAT網關
板凳
0
2

您通過NAT實例需要途徑,如果你想拉姆達與Internet進行通信。

向您現有的VPC子網添加兩個子網和一個NAT網關。然後,在新的子網中設置路由表,通過NAT路由Internet。

+1

@DominickPiganell - 澄清爲什麼* Chris *說你還需要兩個子網:當子網路由到Internet網關時,它是一個_public_子網。專用子網不通過IGW路由,但可能通過NAT網關(與NAT實例不同)路由。 – kdgregory

0
votes
answers
53 views
+10

是否在CA-central-1區域中提供AWS Aurora for PostgreSQL?

1

我試圖通過亞馬遜的網絡界面在ca-central-1(加拿大)設置一個Aurora PostgreSQL數據庫,但儀表板只給我選擇Aurora MySQL的選項。是否在CA-central-1區域中提供AWS Aurora for PostgreSQL?

Aurora PostgreSQL兼容實例在加拿大還沒有提供,或者這是亞馬遜網絡界面中的錯誤?

沙发
0
2

Aurora Postgres SQL兼容性實例在加拿大尚未提供。您可以參考pricing page來查找各個數據庫引擎的可用性。

0
votes
answers
44 views
+10

AWS限制訪問端口

-1

請提供一些建議。我們在AWS上有一個實例。它在單個服務器上託管一個Web應用程序。我們想要限制對應用程序的訪問(端口80/443)。我們不能簡單地將通過防火牆的連接限制到一系列白名單IP地址,因爲我們不知道我們的用戶將來自哪裏,或者他們將有靜態地址。他們不太瞭解技術,如果複雜,他們很可能不會連接。AWS限制訪問端口

亞馬遜虛擬私有云是一個解決方案還是另一種解決方案讓我們到達我們想要的地方。我們是一個非盈利機構,不會向人們收費,所以我們希望在我們的預算範圍內完成這項工作。

理想情況下,我們會提供個人登錄名/密碼,我們可以與允許他們訪問網址的人共享。我們不確定如何實現這一點,但我們認爲限制服務器上的訪問必須是可能的,並且需要關於該方法的一些指導。這對我們來說是新的。

感謝您的閱讀。

Howard

沙发
0
1

您可以使用安全組限制對80/443以上的方框的訪問。然後,使用用戶ID和密碼限制對應用程序的訪問。

+0

只允許端口80,443和22通過安全組。不幸的是,該應用程序不包括訪問控制來限制未經身份驗證的觀衆。我很想知道HTTP基本認證是否可以合併到大多數網站中,或者是否需要VPN來限制對AWS中Web應用程序的訪問。謝謝。 – Howard

+1

你不需要VPN;可以合併HTTP基本認證或表單認證。亞馬遜還爲用戶管理Cognito提供了一個解決方案。 –

+0

謝謝,我會嘗試HTTP基本認證。將它集成到Nginx看起來很簡單。 Cognito似乎非常好,但它看起來像我需要某種API來使用它作爲訪問實例的前端。 – Howard

0
votes
answers
45 views
+10

Claudia.Js - 添加發布標籤

0

任何人都有一種巧妙的方式,在部署時使用Claudi.Js將Github發佈標籤添加到NodeJs風格的AWS Lambda中?我們最初使用Terraform設置我們的Lambdas,然後使用Claudia從Travis部署它們。我想用每個發佈標籤標記它們。Claudia.Js - 添加發布標籤

技術: Terraform 的Git 特拉維斯 克勞迪婭 節點6(AWS的限制) AWS CLI 猛砸

沙发
0
0

添加釋放標籤Github上是推動Git標籤的問題。如果你想從CI做到這一點,你的CI需要有權推動你的回購。 添加標籤很簡單,您應該可以按照本教程進行操作:https://www.barrykooij.com/create-github-releases-via-command-line/

0
votes
answers
57 views
+10

如何在不驗證電子郵件或電話的情況下確認Cognito用戶池中的用戶?

0

我正在使用Amazon Cognito Identity SDK for JavaScript如何在不驗證電子郵件或電話的情況下確認Cognito用戶池中的用戶?

我創建了新的池而不驗證電子郵件和電話號碼。

默認情況下,用戶不會在Cognito用戶池證實,所以我需要手動執行此操作。

如何確認Cognito用戶池中的用戶而不驗證電子郵件或電話?

沙发
0
1

實際上,AWS最近增加了驗證電子郵件地址並驗證預註冊,拉姆達電話號碼以及能力。基本上,您需要設置autoVerifyEmailautoVerifyPhone在lambda,他們將得到驗證。 更多的信息在official documentation

"response": { 
    "autoConfirmUser": boolean 
    "autoVerifyEmail": boolean 
    "autoVerifyPhone": boolean 
}