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 Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 36

0
votes
answers
8 views
+10

如何使用NodeJS在S3 Bucket上上傳CSV文件?

0

我從JSON內容中即時創建一個CSV文件,並在S3存儲區上傳生成的CSV文件,而不是先在本地保存文件。如何使用NodeJS在S3 Bucket上上傳CSV文件?

下面是我的代碼片段,使用下面的代碼我上傳到S3存儲桶的CSV文件,但它似乎並不是正確的CSV格式。

var uploadCSVFileOnS3Bucket = function(next, csvFileContent,results) { 
console.log("uploadCSVFileOnS3Bucket function started"); 
var bufferObject = new Buffer.from(JSON.stringify(csvFileContent)); 
var filePath = configurationHolder.config.s3UploadFilePath; 
var s3 = new AWS.S3(); 
var params = { 
    Bucket: 'bucket_name' 
    Key: 's3UploadFilePath', 
    Body: bufferObject, 
    CacheControl:'public, max-age=86400' 
} 
s3.upload(params, function(err, data) { 
    if (err) { 
     console.log("Error at uploadCSVFileOnS3Bucket function",err); 
     next(err); 
    } else { 
     console.log("File uploaded Successfully"); 
     next(null, filePath); 
    } 
}); 

};

此外,我使用「json2csv」npm模塊從JSON生成csv文件內容。

下面是代碼:

var generateCSVFile = function(next,callback,csvFileContent) { 
    console.log("generateCSVFile function started",csvFileContent); 
    if(csvFileContent && csvFileContent.length>0) { 
    var fields = ['field1','field2','field3',........]; 
    var csv = json2csv({ data: csvFileContent, fields: fields }); 
    console.log('created',csv); 
    next(null,csv); 
    } 
    else { 
    next(null,[]); 
    } 
} 

請讓我們知道上面的代碼是怎麼了。

沙发
0
0

在你的params中添加ContentDisposition:'attachment'。

否則,你也可以閱讀文件並上傳到S3

fs.readFile(FILEPATH, function(err, file_buffer) { 
      var params = { 
       Bucket: //bucketname, 
       Key:key, 
       ContentDisposition: 'attachment', 
       Body: file_buffer 
      }; 
      s3.upload(params, function(err, data) { 
       if (err) { 
        console.log("Error in upload"); 
        callback(err, null) 
       } 
       if (data) { 
        console.log("Upload Success", data); 
        callback(null, data) 
       } 
      }); 
}); 
+0

我試過使用上面的標題,但它沒有提供給我正確的結果。 –

+0

你能ping我錯誤 – Vipul

+0

嗨我再次嘗試使用上述標題,它的工作原理,我在一個單獨的評論中添加了整個代碼。謝謝 –

板凳
0
1

您好我下面報頭值再次嘗試,它爲我工作。下面是代碼:

var s3 = new AWS.S3(); 
var params = { 
    Bucket: bucketName, 
    Key: filePath, 
    Body: csvFileContent, 
    ContentType: 'application/octet-stream', 
    ContentDisposition: contentDisposition(filePath, { 
     type: 'inline' 
    }), 
    CacheControl: 'public, max-age=86400' 
} 
s3.putObject(params, function(err, data) { 
    if (err) { 
     console.log("Error at uploadCSVFileOnS3Bucket function", err); 
     next(err); 
    } else { 
     console.log("File uploaded Successfully"); 
     next(null, filePath); 
    } 
}); 
0
votes
answers
8 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
7 views
+10

如何連接到moto獨立服務器?

0

我剛安裝moto,並試圖用下面的node.js代碼連接到獨立服務器:如何連接到moto獨立服務器?

const AWS = require('aws-sdk') 
const ep = new AWS.Endpoint('http://127.0.0.1:5000') 
const route53 = new AWS.Route53({endpoint: ep}) 

const params = {} 
console.log(route53.listHostedZones(params)) 

代碼設置AWS服務的endpoint,它指向的moto的獨立服務器。然後向端點發送listHostedZones請求。這個程序的輸出是

Request { 
domain: null, 
service: 
Service { 
    config: 
    Config { 
     credentials: [Object], 
     credentialProvider: [Object], 
     region: undefined, 
     logger: null, 
     apiVersions: {}, 
     apiVersion: null, 
     endpoint: [Object], 
     httpOptions: [Object], 
     maxRetries: undefined, 
     maxRedirects: 10, 
     paramValidation: true, 
     sslEnabled: true, 
     s3ForcePathStyle: false, 
     s3BucketEndpoint: false, 
     s3DisableBodySigning: true, 
     computeChecksums: true, 
     convertResponseTypes: true, 
     correctClockSkew: false, 
     customUserAgent: null, 
     dynamoDbCrc32: true, 
     systemClockOffset: 0, 
     signatureVersion: null, 
     signatureCache: true, 
     retryDelayOptions: {}, 
     useAccelerateEndpoint: false }, 
    endpoint: 
    Endpoint { 
     protocol: 'http:', 
     host: '127.0.0.1:5000', 
     port: 5000, 
     hostname: '127.0.0.1', 
     pathname: '/', 
     path: '/', 
     href: 'http://127.0.0.1:5000/', 
     constructor: [Object] }, 
    _clientId: 1 }, 
operation: 'listHostedZones', 
params: {}, 
httpRequest: 
HttpRequest { 
    method: 'POST', 
    path: '/', 
    headers: { 'User-Agent': 'aws-sdk-nodejs/2.166.0 darwin/v6.2.2' }, 
    body: '', 
    endpoint: 
    Endpoint { 
     protocol: 'http:', 
     host: '127.0.0.1:5000', 
     port: 5000, 
     hostname: '127.0.0.1', 
     pathname: '/', 
     path: '/', 
     href: 'http://127.0.0.1:5000/', 
     constructor: [Object] }, 
    region: undefined, 
    _userAgent: 'aws-sdk-nodejs/2.166.0 darwin/v6.2.2' }, 
startTime: 2017-12-18T13:27:48.148Z, 
response: 
Response { 
    request: [Circular], 
    data: null, 
    error: null, 
    retryCount: 0, 
    redirectCount: 0, 
    httpResponse: 
    HttpResponse { 
     statusCode: undefined, 
     headers: {}, 
     body: undefined, 
     streaming: false, 
     stream: null }, 
    maxRetries: 3, 
    maxRedirects: 10 }, 
_asm: 
AcceptorStateMachine { 
    currentState: 'validate', 
    states: 
    { validate: [Object], 
     build: [Object], 
     afterBuild: [Object], 
     sign: [Object], 
     retry: [Object], 
     afterRetry: [Object], 
     send: [Object], 
     validateResponse: [Object], 
     extractError: [Object], 
     extractData: [Object], 
     restart: [Object], 
     success: [Object], 
     error: [Object], 
     complete: [Object] } }, 
_haltHandlersOnError: false, 
_events: 
{ validate: 
    [ [Object], 
     [Function: VALIDATE_REGION], 
     [Function: BUILD_IDEMPOTENCY_TOKENS], 
     [Function: VALIDATE_PARAMETERS] ], 
    afterBuild: 
    [ [Object], 
     [Function: SET_CONTENT_LENGTH], 
     [Function: SET_HTTP_HOST] ], 
    restart: [ [Function: RESTART] ], 
    sign: [ [Object] ], 
    validateResponse: [ [Function: VALIDATE_RESPONSE] ], 
    send: [ [Object] ], 
    httpHeaders: [ [Function: HTTP_HEADERS] ], 
    httpData: [ [Function: HTTP_DATA] ], 
    httpDone: [ [Function: HTTP_DONE] ], 
    retry: 
    [ [Function: FINALIZE_ERROR], 
     [Function: INVALIDATE_CREDENTIALS], 
     [Function: EXPIRED_SIGNATURE], 
     [Function: CLOCK_SKEWED], 
     [Function: REDIRECT], 
     [Function: RETRY_CHECK] ], 
    afterRetry: [ [Object] ], 
    build: [ [Function: buildRequest], [Function: sanitizeUrl] ], 
    extractData: [ [Function: extractData], [Function: extractRequestId] ], 
    extractError: [ [Function: extractError], [Function: extractRequestId] ], 
    httpError: [ [Function: ENOTFOUND_ERROR] ] }, 
emit: [Function: emit] } 

正如你可以在上面的輸出中看到,有一個ENOTFOUND_ERROR錯誤的。我無法在moto的控制檯輸出中找到任何新的連接。

我開始摩托車的方式是moto_server route53

> moto_server route53 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 

這有什麼錯我的配置?我認爲我的node.js代碼有問題。我是否誤解了endpoint的含義?

沙发
0
0
const AWS = require('aws-sdk') 
const ep = new AWS.Endpoint('http://127.0.0.1:5000') 
const initParam = { 
    endpoint: ep, 
    region: 'ap-northeast-1' 
} 
const route53 = new AWS.Route53(initParam) 

let params = { 
    CallerReference: 'unique_string_affh38h98hasd8f76a', 
    Name: 'www.example.com' 
} 
route53.createHostedZone(params, (err, data) => { 
    if (err) { 
    console.error(`createHostedZone err: ${err}`) 
    } else { 
    console.log(`createHostedZone data: ${JSON.stringify(data)}`) 
    } 
}) 

我忘了設置region參數。我查看listHostedZones()的輸出的方式是錯誤的。糾正它們後,代碼正常工作。

0
votes
answers
7 views
+10

Amazon Echo帳戶鏈接 - 如何在生成和保存令牌時識別回顯設備?

0

我有一個用戶帳戶預先存在的web應用程序。我想用亞馬遜的回聲擴展功能。Amazon Echo帳戶鏈接 - 如何在生成和保存令牌時識別回顯設備?

當用戶能夠在他們的回聲/ Alexa的儀表盤上的技巧,它會重定向到我的應用程序的登錄頁面Authorization URL https://foo.com/auth

我檢查了來自Authorization URL https://foo.com/auth並沒有客戶端ID,用戶ID或用戶的電子郵件上請求的傳入的請求。它不會做我任何好生成令牌,併發送回亞馬遜如果我不能保存令牌在我的網絡服務器具有某種呼應客戶端設備ID的一起。

Account linking implicit granting

3用戶登錄使用其正常的憑證爲您的網站。

4您的服務對用戶進行身份驗證,然後生成訪問令牌 在您的系統中唯一標識用戶

當amazon將用戶重定向到我的應用程序以輸入登錄憑據時,如何將他們的令牌鏈接到他們的回顯設備以備將來使用?

enter image description here

沙发
0
0

你不這樣做,當用戶輸入他的憑據,但連接完成後。

當用戶啓動您的技能時,您可以使用context.System.user.userId來識別他,訪問令牌將在context.System.user.accessToken中,設備將在context.System.device. deviceId中。同樣accessToken可用於多種設備,而且如果用戶禁用和重新啓用你的技能userId將發生變化。

更多的信息在這裏:Request and Response JSON Reference

0
votes
answers
7 views
+10

使用EC2創建新的EC2實例時創建標記時出錯Java API

0

我正在嘗試使用AWS JAVA API創建新的EC2 instance。但是我得到消息,但以下情況除外使用EC2創建新的EC2實例時創建標記時出錯Java API

異常線程「main」 com.amazonaws.services.ec2.model.AmazonEC2Exception:標籤規範 資源類型必須有一個值(服務:AmazonEC2;狀態代碼: 400; 錯誤代碼:InvalidParameterValue;請求ID:XXXXXX)

public static void main(String[] args) { 
    Ec2Utilities utils = new Ec2Utilities(); 
    Map<String, String> tagMap = new HashMap<String, String>(); 
    tagMap.put("name", "newinstance"); 
    tagMap.put("category", "cat1"); 
    utils.createInstanceFromAmi("t2.micro", "ami-sdfsds", 1, "sg-sdfsd", "nammme", tagMap); 
} 

public void createInstanceFromAmi(String instanceType, String amiId, int count, String securityGroup, 
     String keyName, Map<String, String> tagMap) { 
    AmazonEC2 ec2Client = Auth.getCredentails(); 
    TagSpecification tagSpecs = new TagSpecification(); 
    tagSpecs.setTags(buildTags(tagMap)); 
    RunInstancesRequest runInstancesRequest = new RunInstancesRequest().withTagSpecifications(tagSpecs) 
                     .withInstanceType(instanceType) 
                     .withImageId(amiId) 
                     .withMinCount(count) 
                     .withMaxCount(2) 
                     .withSecurityGroupIds(securityGroup) 
                     .withKeyName(keyName); 

    RunInstancesResult runInstances = ec2Client.runInstances(runInstancesRequest); 

} 

private List<Tag> buildTags(Map<String, String> tagMap) { 
    List<Tag> tagList = new ArrayList<Tag>(); 
    tagMap.forEach((k, v) -> { 
     tagList.add(new Tag(k, v)); 
    }); 
    System.out.println(tagList); 
    return tagList; 
} 
沙发
0
0

我固定它自己。我加入這個

List<TagSpecification> tagSpecifications = new ArrayList<>(); 
    tagSpecifications.add(new TagSpecification().withTags(buildTags(tagMap)) 

buildTags(tagMap)返回`榜」

0
votes
answers
7 views
+10

如何驗證或創建CloudFormation堆棧

0

我添加了CloudFormation設置文件vpc.ymlfront.yml,導出一些值在vpc.yml並導入它們。 我運行了下面的命令,但它不起作用。如何驗證或創建CloudFormation堆棧

$ aws cloudformation validate-template --template-body file://front.yml 
An error occurred (ValidationError) when calling the ValidateTemplate operation: Template format error: Unresolved resource dependencies [VPCGatewayAttach] in the Resources block of the template 

什麼是堆棧導入其他值的有效命令是什麼?

+0

請張貼您的'cft'來更好地瞭解您錯過的東西。 – Asdfg

沙发
0
0

您正在獲取的錯誤是因爲您在VPCGatewayAttach中指定了依賴關係的其中一個資源中有dependsOn屬性,但在您的cft中不存在VPCGatewayAttach

+0

哦,沒有'dependsOn'屬性,它工作正常! 我們可以使用'Fn :: ImportValue'或其他指定其他堆棧資源爲'dependsOn'嗎? –

+0

不可以。 – Asdfg

+0

嗯,好的。謝謝! –

0
votes
answers
7 views
+10

X射線添加到AWS Lamda功能的延遲有多遠

0

我已經瀏覽了文檔,無法找到關於X射線追蹤應該添加到Lambda函數執行(以及其他服務好)。它應該是最小的,但由於它發出了痕跡,所以預計會有一些延遲。X射線添加到AWS Lamda功能的延遲有多遠

有人有數字嗎?

沙发
0
2

您在應用程序中使用的AWS X-Ray SDK不直接向X-Ray服務發送跟蹤段。這些段通過UDP傳輸到本地主機上運行的xray守護進程。因此,所涉及的延遲僅適用於內存更新段數據。只有當這些段完成時,它們才通過UDP發送到本地主機。因此,您應該期望在您的應用程序上可能產生最小的開銷此外,運行在單獨進程中的守護進程不會立即將段發送到服務。它在短時間內緩衝段,並定期使用PutTraceSegments API調用批量發送它們。

如果您有興趣進一步挖掘,大多數AWS X-Ray SDK都是在github上開源的。以Java SDK爲例https://github.com/aws/aws-xray-sdk-java

0
votes
answers
6 views
+10

如何在另一個完成後運行一個lambda函數

0

我有一個aws lambda函數,它每天與cron作業同時運行,並且正在生成cloudwatch日誌。我有另一個lambda函數,它將這些cloudwatch日誌轉移到S3。所以我希望當我的第一個lambda函數完成執行時,日誌lambda函數啓動並將日誌推送到S3存儲桶。請建議我如何實現這一目標。如何在另一個完成後運行一個lambda函數

沙发
0
1

您可以通過AWS SDK從另一個Lambda函數調用Lambda函數。所以你的第一個函數在完成時應該調用第二個函數。確保在調用第二個函數時選擇InvocationType「Event」,並且不要添加任何回調以避免函數並行運行並支付兩次。

0
votes
answers
6 views
+10

AWS Cloudwatch Guardduty鏈接

0

在AWS中,我嘗試檢測Guardduty中的重要警報,並配置cloudwatch,當警戒中存在嚴重警報時,它將觸發郵件。 我發現了一個鏈接http://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings_cloudwatch.html,它使用Lambda創建功能,但是我在尋找更簡單的方法,而不使用AWS lamda。AWS Cloudwatch Guardduty鏈接

是否有辦法直接配置Cloudwatch警報,該警報會監視Guardduty,並可以使用SNS通知向所需的團隊發送郵件。

沙发
0
0

我按照您發佈的鏈接中所述實施了CloudWatch事件。我通過SNS收到警報。不需要Lambda(儘管如果你願意,你可以觸發一個Lambda函數而不是SNS)。

+0

但鏈接不提供如何爲Guardduty設置SNS。此外,我還需要在guardduty上發送關鍵警報通知。我在clouwatch上設置了該事件,但未能在使用SNS的嚴重警報上配置SNS。 –

+0

好吧,我明白了。我能夠爲守衛值班事件配置SNS。 但是,我試圖找出如何在guardduty中獲得關鍵警報的通知。來自你方的任何意見? –

0
votes
answers
6 views
+10

無法連接到運行在aws ec2實例的節點服務器上的網站。

0

我已經爲Windows實例做了這個,但不能在Ubuntu上做同樣的事情。無法連接到運行在aws ec2實例的節點服務器上的網站。

我在ubuntu aws-ec2實例的節點服務器上運行Website。但無法從外部連接到它。該網站在實例上運行良好,可以使用本地主機訪問。它在端口上運行:8080.

我已將此端口號與其他端口一起添加到安全組的入站規則中:80. Screenshot of inbound rules

我還在ufw(防火牆)中添加了允許http請求的規則。 Screenshot of ufw status

我想通過此鏈接訪問網站:http://ec2-52-87-224-241.compute-1.amazonaws.com:8080/但接收無法連接錯誤。

+0

對不起 - 請問,但服務器正在運行,並在端口8080?它有一個很快的連接拒絕響應,這讓我覺得它聽不正確。 – stdunbar

+0

您正在綁定您的網絡服務器(https://github.com/vishalydv23/SurveyWebsite/blob/master/server.js#L43)。改變它,它會工作。 – weirdpanda

+0

@ weirdpanda謝謝,這工作。 Regards – Vishal

沙发
0
0

看來喜歡你的服務器綁定到本地接口的下面一行:

... http.createServer(onRequest).listen(port, "localhost"); ...

變化是,它應該很好地工作!綁定服務器對象時,節點只接受來自該接口的連接只有